TPTP Problem File: ITP166^2.p

View Solutions - Solve Problem

%------------------------------------------------------------------------------
% File     : ITP166^2 : TPTP v8.2.0. Released v7.5.0.
% Domain   : Interactive Theorem Proving
% Problem  : Sledgehammer RelationalIncorrectness problem prob_274__5902014_1
% Version  : Especial.
% English  :

% Refs     : [BH+15] Blanchette et al. (2015), Mining the Archive of Formal
%          : [Des21] Desharnais (2021), Email to Geoff Sutcliffe
% Source   : [Des21]
% Names    : RelationalIncorrectness/prob_274__5902014_1 [Des21]

% Status   : Theorem
% Rating   : 0.33 v8.2.0, 0.00 v8.1.0, 0.25 v7.5.0
% Syntax   : Number of formulae    :  386 ( 161 unt;  97 typ;   0 def)
%            Number of atoms       :  672 ( 312 equ;   0 cnn)
%            Maximal formula atoms :   16 (   2 avg)
%            Number of connectives : 4792 (  88   ~;  14   |;  90   &;4367   @)
%                                         (   0 <=>; 233  =>;   0  <=;   0 <~>)
%            Maximal formula depth :   28 (   8 avg)
%            Number of types       :    9 (   8 usr)
%            Number of type conns  :  873 ( 873   >;   0   *;   0   +;   0  <<)
%            Number of symbols     :   92 (  89 usr;   8 con; 0-9 aty)
%            Number of variables   : 1271 (  98   ^;1049   !;  51   ?;1271   :)
%                                         (  73  !>;   0  ?*;   0  @-;   0  @+)
% SPC      : TH1_THM_EQU_NAR

% Comments : This file was generated by Sledgehammer 2021-02-23 16:18:45.506
%------------------------------------------------------------------------------
% Could-be-implicit typings (14)
thf(ty_t_Record_Otuple__isomorphism,type,
    tuple_isomorphism: $tType > $tType > $tType > $tType ).

thf(ty_t_Product__Type_Oprod,type,
    product_prod: $tType > $tType > $tType ).

thf(ty_t_Typerep_Otyperep,type,
    typerep: $tType ).

thf(ty_t_String_Oliteral,type,
    literal: $tType ).

thf(ty_t_Sum__Type_Osum,type,
    sum_sum: $tType > $tType > $tType ).

thf(ty_t_Option_Ooption,type,
    option: $tType > $tType ).

thf(ty_t_String_Ochar,type,
    char: $tType ).

thf(ty_t_List_Olist,type,
    list: $tType > $tType ).

thf(ty_t_BExp_Obexp,type,
    bexp: $tType ).

thf(ty_t_AExp_Oaexp,type,
    aexp: $tType ).

thf(ty_t_Set_Oset,type,
    set: $tType > $tType ).

thf(ty_t_Nat_Onat,type,
    nat: $tType ).

thf(ty_t_Int_Oint,type,
    int: $tType ).

thf(ty_t_Com_Ocom,type,
    com: $tType ).

% Explicit typings (83)
thf(sy_cl_HOL_Otype,type,
    type: 
      !>[A: $tType] : $o ).

thf(sy_cl_Nat_Osize,type,
    size: 
      !>[A: $tType] : $o ).

thf(sy_cl_Groups_Ozero,type,
    zero: 
      !>[A: $tType] : $o ).

thf(sy_cl_Num_Oneg__numeral,type,
    neg_numeral: 
      !>[A: $tType] : $o ).

thf(sy_cl_Groups_Ogroup__add,type,
    group_add: 
      !>[A: $tType] : $o ).

thf(sy_cl_Groups_Omonoid__add,type,
    monoid_add: 
      !>[A: $tType] : $o ).

thf(sy_cl_Groups_Osemigroup__add,type,
    semigroup_add: 
      !>[A: $tType] : $o ).

thf(sy_cl_Groups_Ocomm__monoid__add,type,
    comm_monoid_add: 
      !>[A: $tType] : $o ).

thf(sy_cl_Groups_Oab__semigroup__add,type,
    ab_semigroup_add: 
      !>[A: $tType] : $o ).

thf(sy_cl_Groups_Ocancel__semigroup__add,type,
    cancel_semigroup_add: 
      !>[A: $tType] : $o ).

thf(sy_cl_Groups_Ocancel__comm__monoid__add,type,
    cancel1352612707id_add: 
      !>[A: $tType] : $o ).

thf(sy_cl_Groups_Olinordered__ab__group__add,type,
    linord219039673up_add: 
      !>[A: $tType] : $o ).

thf(sy_cl_Groups_Oordered__ab__semigroup__add,type,
    ordere779506340up_add: 
      !>[A: $tType] : $o ).

thf(sy_cl_Groups_Ocanonically__ordered__monoid__add,type,
    canoni770627133id_add: 
      !>[A: $tType] : $o ).

thf(sy_cl_Divides_Ounique__euclidean__semiring__numeral,type,
    unique1598680935umeral: 
      !>[A: $tType] : $o ).

thf(sy_cl_Semiring__Normalization_Ocomm__semiring__1__cancel__crossproduct,type,
    semiri456707255roduct: 
      !>[A: $tType] : $o ).

thf(sy_c_BExp_Obval,type,
    bval: bexp > ( ( list @ char ) > int ) > $o ).

thf(sy_c_BNF__Greatest__Fixpoint_OShift,type,
    bNF_Greatest_Shift: 
      !>[A: $tType] : ( ( set @ ( list @ A ) ) > A > ( set @ ( list @ A ) ) ) ).

thf(sy_c_BNF__Greatest__Fixpoint_OSucc,type,
    bNF_Greatest_Succ: 
      !>[A: $tType] : ( ( set @ ( list @ A ) ) > ( list @ A ) > ( set @ A ) ) ).

thf(sy_c_BNF__Greatest__Fixpoint_Oimage2,type,
    bNF_Greatest_image2: 
      !>[C: $tType,A: $tType,B: $tType] : ( ( set @ C ) > ( C > A ) > ( C > B ) > ( set @ ( product_prod @ A @ B ) ) ) ).

thf(sy_c_BNF__Greatest__Fixpoint_Oimage2p,type,
    bNF_Greatest_image2p: 
      !>[C: $tType,A: $tType,D: $tType,B: $tType] : ( ( C > A ) > ( D > B ) > ( C > D > $o ) > A > B > $o ) ).

thf(sy_c_BNF__Greatest__Fixpoint_OrelImage,type,
    bNF_Gr1317331620lImage: 
      !>[B: $tType,A: $tType] : ( ( set @ ( product_prod @ B @ B ) ) > ( B > A ) > ( set @ ( product_prod @ A @ A ) ) ) ).

thf(sy_c_BNF__Greatest__Fixpoint_OrelInvImage,type,
    bNF_Gr2107612801vImage: 
      !>[A: $tType,B: $tType] : ( ( set @ A ) > ( set @ ( product_prod @ B @ B ) ) > ( A > B ) > ( set @ ( product_prod @ A @ A ) ) ) ).

thf(sy_c_BNF__Greatest__Fixpoint_Oshift,type,
    bNF_Greatest_shift: 
      !>[A: $tType,B: $tType] : ( ( ( list @ A ) > B ) > A > ( list @ A ) > B ) ).

thf(sy_c_Basic__BNF__LFPs_Osum_Osize__sum,type,
    basic_BNF_size_sum: 
      !>[A: $tType,B: $tType] : ( ( A > nat ) > ( B > nat ) > ( sum_sum @ A @ B ) > nat ) ).

thf(sy_c_Big__Step_Obig__step,type,
    big_big_step: ( product_prod @ com @ ( ( list @ char ) > int ) ) > ( ( list @ char ) > int ) > $o ).

thf(sy_c_Com_Ocom_OAssign,type,
    assign: ( list @ char ) > aexp > com ).

thf(sy_c_Com_Ocom_OIf,type,
    if: bexp > com > com > com ).

thf(sy_c_Com_Ocom_OSKIP,type,
    skip: com ).

thf(sy_c_Com_Ocom_OSeq,type,
    seq: com > com > com ).

thf(sy_c_Com_Ocom_OWhile,type,
    while: bexp > com > com ).

thf(sy_c_Com_Ocom_Osize__com,type,
    size_com: com > nat ).

thf(sy_c_Divides_Ounique__euclidean__semiring__numeral__class_Odivides__aux,type,
    unique455577585es_aux: 
      !>[A: $tType] : ( ( product_prod @ A @ A ) > $o ) ).

thf(sy_c_Groups_Oplus__class_Oplus,type,
    plus_plus: 
      !>[A: $tType] : ( A > A > A ) ).

thf(sy_c_Groups_Ozero__class_Ozero,type,
    zero_zero: 
      !>[A: $tType] : A ).

thf(sy_c_List_Oappend,type,
    append: 
      !>[A: $tType] : ( ( list @ A ) > ( list @ A ) > ( list @ A ) ) ).

thf(sy_c_List_Ogen__length,type,
    gen_length: 
      !>[A: $tType] : ( nat > ( list @ A ) > nat ) ).

thf(sy_c_List_Olex,type,
    lex: 
      !>[A: $tType] : ( ( set @ ( product_prod @ A @ A ) ) > ( set @ ( product_prod @ ( list @ A ) @ ( list @ A ) ) ) ) ).

thf(sy_c_List_Olexn,type,
    lexn: 
      !>[A: $tType] : ( ( set @ ( product_prod @ A @ A ) ) > nat > ( set @ ( product_prod @ ( list @ A ) @ ( list @ A ) ) ) ) ).

thf(sy_c_List_Olexord,type,
    lexord: 
      !>[A: $tType] : ( ( set @ ( product_prod @ A @ A ) ) > ( set @ ( product_prod @ ( list @ A ) @ ( list @ A ) ) ) ) ).

thf(sy_c_List_Olist_OCons,type,
    cons: 
      !>[A: $tType] : ( A > ( list @ A ) > ( list @ A ) ) ).

thf(sy_c_List_Olist_Osize__list,type,
    size_list: 
      !>[A: $tType] : ( ( A > nat ) > ( list @ A ) > nat ) ).

thf(sy_c_List_Olistrel1,type,
    listrel1: 
      !>[A: $tType] : ( ( set @ ( product_prod @ A @ A ) ) > ( set @ ( product_prod @ ( list @ A ) @ ( list @ A ) ) ) ) ).

thf(sy_c_List_Oset__Cons,type,
    set_Cons: 
      !>[A: $tType] : ( ( set @ A ) > ( set @ ( list @ A ) ) > ( set @ ( list @ A ) ) ) ).

thf(sy_c_List_Osplice,type,
    splice: 
      !>[A: $tType] : ( ( list @ A ) > ( list @ A ) > ( list @ A ) ) ).

thf(sy_c_Nat_OSuc,type,
    suc: nat > nat ).

thf(sy_c_Nat_Osize__class_Osize,type,
    size_size: 
      !>[A: $tType] : ( A > nat ) ).

thf(sy_c_Option_Ooption_ONone,type,
    none: 
      !>[A: $tType] : ( option @ A ) ).

thf(sy_c_Option_Ooption_OSome,type,
    some: 
      !>[A: $tType] : ( A > ( option @ A ) ) ).

thf(sy_c_Option_Ooption_Ocase__option,type,
    case_option: 
      !>[B: $tType,A: $tType] : ( B > ( A > B ) > ( option @ A ) > B ) ).

thf(sy_c_Option_Ooption_Osize__option,type,
    size_option: 
      !>[A: $tType] : ( ( A > nat ) > ( option @ A ) > nat ) ).

thf(sy_c_Product__Type_OPair,type,
    product_Pair: 
      !>[A: $tType,B: $tType] : ( A > B > ( product_prod @ A @ B ) ) ).

thf(sy_c_Product__Type_Ointernal__case__prod,type,
    produc2004651681e_prod: 
      !>[A: $tType,B: $tType,C: $tType] : ( ( A > B > C ) > ( product_prod @ A @ B ) > C ) ).

thf(sy_c_Product__Type_Oold_Oprod_Orec__prod,type,
    product_rec_prod: 
      !>[A: $tType,B: $tType,T: $tType] : ( ( A > B > T ) > ( product_prod @ A @ B ) > T ) ).

thf(sy_c_Record_Otuple__isomorphism_OTuple__Isomorphism,type,
    tuple_742722141rphism: 
      !>[A: $tType,B: $tType,C: $tType] : ( ( A > ( product_prod @ B @ C ) ) > ( ( product_prod @ B @ C ) > A ) > ( tuple_isomorphism @ A @ B @ C ) ) ).

thf(sy_c_Record_Otuple__isomorphism_Osize__tuple__isomorphism,type,
    tuple_1907371454rphism: 
      !>[A: $tType,B: $tType,C: $tType] : ( ( A > nat ) > ( B > nat ) > ( C > nat ) > ( tuple_isomorphism @ A @ B @ C ) > nat ) ).

thf(sy_c_RelationalIncorrectness__Mirabelle__uhfznwwgmv_Oflip,type,
    relati1716060877e_flip: ( ( ( list @ char ) > int ) > ( ( list @ char ) > int ) > $o ) > ( ( list @ char ) > int ) > ( ( list @ char ) > int ) > $o ).

thf(sy_c_RelationalIncorrectness__Mirabelle__uhfznwwgmv_Oget__back,type,
    relati1010904253t_back: 
      !>[A: $tType] : ( ( ( ( list @ char ) > int ) > A > $o ) > bexp > com > nat > ( ( list @ char ) > int ) > A > $o ) ).

thf(sy_c_RelationalIncorrectness__Mirabelle__uhfznwwgmv_Oir__hoare,type,
    relati1493963588_hoare: ( ( ( list @ char ) > int ) > ( ( list @ char ) > int ) > $o ) > com > com > ( ( ( list @ char ) > int ) > ( ( list @ char ) > int ) > $o ) > $o ).

thf(sy_c_RelationalIncorrectness__Mirabelle__uhfznwwgmv_Oir__valid,type,
    relati167478067_valid: ( ( ( list @ char ) > int ) > ( ( list @ char ) > int ) > $o ) > com > com > ( ( ( list @ char ) > int ) > ( ( list @ char ) > int ) > $o ) > $o ).

thf(sy_c_Set_OCollect,type,
    collect: 
      !>[A: $tType] : ( ( A > $o ) > ( set @ A ) ) ).

thf(sy_c_Sum__Type_OInl,type,
    sum_Inl: 
      !>[A: $tType,B: $tType] : ( A > ( sum_sum @ A @ B ) ) ).

thf(sy_c_Sum__Type_OInr,type,
    sum_Inr: 
      !>[B: $tType,A: $tType] : ( B > ( sum_sum @ A @ B ) ) ).

thf(sy_c_Typerep_Otyperep_OTyperep,type,
    typerep2: literal > ( list @ typerep ) > typerep ).

thf(sy_c_Typerep_Otyperep_Osize__typerep,type,
    size_typerep: typerep > nat ).

thf(sy_c_member,type,
    member: 
      !>[A: $tType] : ( A > ( set @ A ) > $o ) ).

thf(sy_v_P,type,
    p: ( ( list @ char ) > int ) > ( ( list @ char ) > int ) > $o ).

thf(sy_v_Q,type,
    q: ( ( list @ char ) > int ) > ( ( list @ char ) > int ) > $o ).

thf(sy_v_b,type,
    b: bexp ).

thf(sy_v_c,type,
    c: com ).

thf(sy_v_c_H,type,
    c2: com ).

thf(sy_v_k,type,
    k: nat ).

thf(sy_v_ka____,type,
    ka: nat ).

thf(sy_v_s_H____,type,
    s: ( list @ char ) > int ).

thf(sy_v_s_Ha____,type,
    s_a: ( list @ char ) > int ).

thf(sy_v_s____,type,
    s2: ( list @ char ) > int ).

thf(sy_v_sa____,type,
    sa: ( list @ char ) > int ).

thf(sy_v_t_H____,type,
    t: ( list @ char ) > int ).

thf(sy_v_t_Ha____,type,
    t_a: ( list @ char ) > int ).

thf(sy_v_t____,type,
    t2: ( list @ char ) > int ).

thf(sy_v_ta____,type,
    ta: ( list @ char ) > int ).

thf(sy_v_u____,type,
    u: ( list @ char ) > int ).

thf(sy_v_ua____,type,
    ua: ( list @ char ) > int ).

% Relevant facts (253)
thf(fact_0_Suc_Oprems_I6_J,axiom,
    bval @ b @ sa ).

% Suc.prems(6)
thf(fact_1__092_060open_062bval_Ab_As_____092_060close_062,axiom,
    bval @ b @ s2 ).

% \<open>bval b s__\<close>
thf(fact_2_Suc_Oprems_I3_J,axiom,
    big_big_step @ ( product_Pair @ com @ ( ( list @ char ) > int ) @ c @ sa ) @ ta ).

% Suc.prems(3)
thf(fact_3_Suc_Oprems_I4_J,axiom,
    big_big_step @ ( product_Pair @ com @ ( ( list @ char ) > int ) @ c2 @ s_a ) @ t_a ).

% Suc.prems(4)
thf(fact_4_Suc_Oprems_I7_J,axiom,
    relati1010904253t_back @ ( ( list @ char ) > int ) @ p @ b @ c @ ( suc @ ka ) @ sa @ s_a ).

% Suc.prems(7)
thf(fact_5__092_060open_062_Ic_H_M_As_H_____J_A_092_060Rightarrow_062_At_H_____092_060close_062,axiom,
    big_big_step @ ( product_Pair @ com @ ( ( list @ char ) > int ) @ c2 @ s ) @ t ).

% \<open>(c', s'__) \<Rightarrow> t'__\<close>
thf(fact_6__092_060open_062_Ic_M_As_____J_A_092_060Rightarrow_062_At_____092_060close_062,axiom,
    big_big_step @ ( product_Pair @ com @ ( ( list @ char ) > int ) @ c @ s2 ) @ t2 ).

% \<open>(c, s__) \<Rightarrow> t__\<close>
thf(fact_7_Suc_Oprems_I5_J,axiom,
    q @ ua @ t_a ).

% Suc.prems(5)
thf(fact_8__092_060open_062get__back_AP_Ab_Ac_Ak_As_____As_H_____092_060close_062,axiom,
    relati1010904253t_back @ ( ( list @ char ) > int ) @ p @ b @ c @ k @ s2 @ s ).

% \<open>get_back P b c k s__ s'__\<close>
thf(fact_9_Suc_Oprems_I2_J,axiom,
    big_big_step @ ( product_Pair @ com @ ( ( list @ char ) > int ) @ ( while @ b @ c ) @ ta ) @ ua ).

% Suc.prems(2)
thf(fact_10__092_060open_062_IWHILE_Ab_ADO_Ac_M_At_____J_A_092_060Rightarrow_062_Au_____092_060close_062,axiom,
    big_big_step @ ( product_Pair @ com @ ( ( list @ char ) > int ) @ ( while @ b @ c ) @ t2 ) @ u ).

% \<open>(WHILE b DO c, t__) \<Rightarrow> u__\<close>
thf(fact_11_Suc_Oprems_I1_J,axiom,
    relati167478067_valid @ ( relati1010904253t_back @ ( ( list @ char ) > int ) @ p @ b @ c @ ( suc @ ka ) ) @ ( while @ b @ c ) @ c2 @ q ).

% Suc.prems(1)
thf(fact_12_nat_Oinject,axiom,
    ! [X2: nat,Y2: nat] :
      ( ( ( suc @ X2 )
        = ( suc @ Y2 ) )
      = ( X2 = Y2 ) ) ).

% nat.inject
thf(fact_13_old_Onat_Oinject,axiom,
    ! [Nat: nat,Nat2: nat] :
      ( ( ( suc @ Nat )
        = ( suc @ Nat2 ) )
      = ( Nat = Nat2 ) ) ).

% old.nat.inject
thf(fact_14_prod_Oinject,axiom,
    ! [A: $tType,B: $tType,X1: A,X2: B,Y1: A,Y2: B] :
      ( ( ( product_Pair @ A @ B @ X1 @ X2 )
        = ( product_Pair @ A @ B @ Y1 @ Y2 ) )
      = ( ( X1 = Y1 )
        & ( X2 = Y2 ) ) ) ).

% prod.inject
thf(fact_15_old_Oprod_Oinject,axiom,
    ! [A: $tType,B: $tType,A2: A,B2: B,A3: A,B3: B] :
      ( ( ( product_Pair @ A @ B @ A2 @ B2 )
        = ( product_Pair @ A @ B @ A3 @ B3 ) )
      = ( ( A2 = A3 )
        & ( B2 = B3 ) ) ) ).

% old.prod.inject
thf(fact_16_Suc_OIH,axiom,
    ! [T2: ( list @ char ) > int,U: ( list @ char ) > int,S: ( list @ char ) > int,S2: ( list @ char ) > int,T3: ( list @ char ) > int] :
      ( ( relati167478067_valid @ ( relati1010904253t_back @ ( ( list @ char ) > int ) @ p @ b @ c @ ka ) @ ( while @ b @ c ) @ c2 @ q )
     => ( ( big_big_step @ ( product_Pair @ com @ ( ( list @ char ) > int ) @ ( while @ b @ c ) @ T2 ) @ U )
       => ( ( big_big_step @ ( product_Pair @ com @ ( ( list @ char ) > int ) @ c @ S ) @ T2 )
         => ( ( big_big_step @ ( product_Pair @ com @ ( ( list @ char ) > int ) @ c2 @ S2 ) @ T3 )
           => ( ( q @ U @ T3 )
             => ( ( bval @ b @ S )
               => ( ( relati1010904253t_back @ ( ( list @ char ) > int ) @ p @ b @ c @ ka @ S @ S2 )
                 => ? [S3: ( list @ char ) > int,S4: ( list @ char ) > int] :
                      ( ( relati1010904253t_back @ ( ( list @ char ) > int ) @ p @ b @ c @ ka @ S3 @ S4 )
                      & ( bval @ b @ S3 )
                      & ( big_big_step @ ( product_Pair @ com @ ( ( list @ char ) > int ) @ c @ S3 ) @ T2 )
                      & ( big_big_step @ ( product_Pair @ com @ ( ( list @ char ) > int ) @ c2 @ S4 ) @ T3 ) ) ) ) ) ) ) ) ) ).

% Suc.IH
thf(fact_17_sim__sym,axiom,
    ! [C2: com,C3: com] :
      ( ( ! [S5: ( list @ char ) > int,T4: ( list @ char ) > int] :
            ( ( big_big_step @ ( product_Pair @ com @ ( ( list @ char ) > int ) @ C2 @ S5 ) @ T4 )
            = ( big_big_step @ ( product_Pair @ com @ ( ( list @ char ) > int ) @ C3 @ S5 ) @ T4 ) ) )
      = ( ! [S5: ( list @ char ) > int,T4: ( list @ char ) > int] :
            ( ( big_big_step @ ( product_Pair @ com @ ( ( list @ char ) > int ) @ C3 @ S5 ) @ T4 )
            = ( big_big_step @ ( product_Pair @ com @ ( ( list @ char ) > int ) @ C2 @ S5 ) @ T4 ) ) ) ) ).

% sim_sym
thf(fact_18_sim__refl,axiom,
    ! [C2: com,S6: ( list @ char ) > int,T5: ( list @ char ) > int] :
      ( ( big_big_step @ ( product_Pair @ com @ ( ( list @ char ) > int ) @ C2 @ S6 ) @ T5 )
      = ( big_big_step @ ( product_Pair @ com @ ( ( list @ char ) > int ) @ C2 @ S6 ) @ T5 ) ) ).

% sim_refl
thf(fact_19__092_060open_062Q_Au_____At_H_____092_060close_062,axiom,
    q @ u @ t ).

% \<open>Q u__ t'__\<close>
thf(fact_20_disj__ir__valid,axiom,
    ! [P_1: ( ( list @ char ) > int ) > ( ( list @ char ) > int ) > $o,C2: com,C3: com,Q_1: ( ( list @ char ) > int ) > ( ( list @ char ) > int ) > $o,P_2: ( ( list @ char ) > int ) > ( ( list @ char ) > int ) > $o,Q_2: ( ( list @ char ) > int ) > ( ( list @ char ) > int ) > $o] :
      ( ( relati167478067_valid @ P_1 @ C2 @ C3 @ Q_1 )
     => ( ( relati167478067_valid @ P_2 @ C2 @ C3 @ Q_2 )
       => ( relati167478067_valid
          @ ^ [S5: ( list @ char ) > int,S7: ( list @ char ) > int] :
              ( ( P_1 @ S5 @ S7 )
              | ( P_2 @ S5 @ S7 ) )
          @ C2
          @ C3
          @ ^ [T4: ( list @ char ) > int,T6: ( list @ char ) > int] :
              ( ( Q_1 @ T4 @ T6 )
              | ( Q_2 @ T4 @ T6 ) ) ) ) ) ).

% disj_ir_valid
thf(fact_21__092_060open_062ir__valid_A_Iget__back_AP_Ab_Ac_Ak_J_A_IWHILE_Ab_ADO_Ac_J_Ac_H_AQ_092_060close_062,axiom,
    relati167478067_valid @ ( relati1010904253t_back @ ( ( list @ char ) > int ) @ p @ b @ c @ k ) @ ( while @ b @ c ) @ c2 @ q ).

% \<open>ir_valid (get_back P b c k) (WHILE b DO c) c' Q\<close>
thf(fact_22_conseq__ir__valid,axiom,
    ! [P: ( ( list @ char ) > int ) > ( ( list @ char ) > int ) > $o,C2: com,C3: com,Q: ( ( list @ char ) > int ) > ( ( list @ char ) > int ) > $o,P2: ( ( list @ char ) > int ) > ( ( list @ char ) > int ) > $o,Q2: ( ( list @ char ) > int ) > ( ( list @ char ) > int ) > $o] :
      ( ( relati167478067_valid @ P @ C2 @ C3 @ Q )
     => ( ! [S3: ( list @ char ) > int,S4: ( list @ char ) > int] :
            ( ( P @ S3 @ S4 )
           => ( P2 @ S3 @ S4 ) )
       => ( ! [S3: ( list @ char ) > int,S4: ( list @ char ) > int] :
              ( ( Q2 @ S3 @ S4 )
             => ( Q @ S3 @ S4 ) )
         => ( relati167478067_valid @ P2 @ C2 @ C3 @ Q2 ) ) ) ) ).

% conseq_ir_valid
thf(fact_23_ir__valid__get__back,axiom,
    ! [P: ( ( list @ char ) > int ) > ( ( list @ char ) > int ) > $o,B2: bexp,C2: com,K: nat,C3: com,Q: ( ( list @ char ) > int ) > ( ( list @ char ) > int ) > $o] :
      ( ( relati167478067_valid @ ( relati1010904253t_back @ ( ( list @ char ) > int ) @ P @ B2 @ C2 @ ( suc @ K ) ) @ ( while @ B2 @ C2 ) @ C3 @ Q )
     => ( relati167478067_valid @ ( relati1010904253t_back @ ( ( list @ char ) > int ) @ P @ B2 @ C2 @ K ) @ ( while @ B2 @ C2 ) @ C3 @ Q ) ) ).

% ir_valid_get_back
thf(fact_24_sim__while__cong__aux,axiom,
    ! [B2: bexp,C2: com,S: ( list @ char ) > int,T2: ( list @ char ) > int,C3: com] :
      ( ( big_big_step @ ( product_Pair @ com @ ( ( list @ char ) > int ) @ ( while @ B2 @ C2 ) @ S ) @ T2 )
     => ( ! [S3: ( list @ char ) > int,T7: ( list @ char ) > int] :
            ( ( big_big_step @ ( product_Pair @ com @ ( ( list @ char ) > int ) @ C2 @ S3 ) @ T7 )
            = ( big_big_step @ ( product_Pair @ com @ ( ( list @ char ) > int ) @ C3 @ S3 ) @ T7 ) )
       => ( big_big_step @ ( product_Pair @ com @ ( ( list @ char ) > int ) @ ( while @ B2 @ C3 ) @ S ) @ T2 ) ) ) ).

% sim_while_cong_aux
thf(fact_25_sim__while__cong,axiom,
    ! [C2: com,C3: com,B2: bexp] :
      ( ! [S3: ( list @ char ) > int,T7: ( list @ char ) > int] :
          ( ( big_big_step @ ( product_Pair @ com @ ( ( list @ char ) > int ) @ C2 @ S3 ) @ T7 )
          = ( big_big_step @ ( product_Pair @ com @ ( ( list @ char ) > int ) @ C3 @ S3 ) @ T7 ) )
     => ! [S6: ( list @ char ) > int,T5: ( list @ char ) > int] :
          ( ( big_big_step @ ( product_Pair @ com @ ( ( list @ char ) > int ) @ ( while @ B2 @ C2 ) @ S6 ) @ T5 )
          = ( big_big_step @ ( product_Pair @ com @ ( ( list @ char ) > int ) @ ( while @ B2 @ C3 ) @ S6 ) @ T5 ) ) ) ).

% sim_while_cong
thf(fact_26_ir__valid__def,axiom,
    ( relati167478067_valid
    = ( ^ [P3: ( ( list @ char ) > int ) > ( ( list @ char ) > int ) > $o,C4: com,C5: com,Q3: ( ( list @ char ) > int ) > ( ( list @ char ) > int ) > $o] :
        ! [T4: ( list @ char ) > int,T6: ( list @ char ) > int] :
          ( ( Q3 @ T4 @ T6 )
         => ? [S5: ( list @ char ) > int,S7: ( list @ char ) > int] :
              ( ( P3 @ S5 @ S7 )
              & ( big_big_step @ ( product_Pair @ com @ ( ( list @ char ) > int ) @ C4 @ S5 ) @ T4 )
              & ( big_big_step @ ( product_Pair @ com @ ( ( list @ char ) > int ) @ C5 @ S7 ) @ T6 ) ) ) ) ) ).

% ir_valid_def
thf(fact_27_WhileFalse,axiom,
    ! [B2: bexp,S: ( list @ char ) > int,C2: com] :
      ( ~ ( bval @ B2 @ S )
     => ( big_big_step @ ( product_Pair @ com @ ( ( list @ char ) > int ) @ ( while @ B2 @ C2 ) @ S ) @ S ) ) ).

% WhileFalse
thf(fact_28_WhileTrue,axiom,
    ! [B2: bexp,S_1: ( list @ char ) > int,C2: com,S_2: ( list @ char ) > int,S_3: ( list @ char ) > int] :
      ( ( bval @ B2 @ S_1 )
     => ( ( big_big_step @ ( product_Pair @ com @ ( ( list @ char ) > int ) @ C2 @ S_1 ) @ S_2 )
       => ( ( big_big_step @ ( product_Pair @ com @ ( ( list @ char ) > int ) @ ( while @ B2 @ C2 ) @ S_2 ) @ S_3 )
         => ( big_big_step @ ( product_Pair @ com @ ( ( list @ char ) > int ) @ ( while @ B2 @ C2 ) @ S_1 ) @ S_3 ) ) ) ) ).

% WhileTrue
thf(fact_29_WhileE,axiom,
    ! [B2: bexp,C2: com,S: ( list @ char ) > int,T2: ( list @ char ) > int] :
      ( ( big_big_step @ ( product_Pair @ com @ ( ( list @ char ) > int ) @ ( while @ B2 @ C2 ) @ S ) @ T2 )
     => ( ( ( T2 = S )
         => ( bval @ B2 @ S ) )
       => ~ ( ( bval @ B2 @ S )
           => ! [S_22: ( list @ char ) > int] :
                ( ( big_big_step @ ( product_Pair @ com @ ( ( list @ char ) > int ) @ C2 @ S ) @ S_22 )
               => ~ ( big_big_step @ ( product_Pair @ com @ ( ( list @ char ) > int ) @ ( while @ B2 @ C2 ) @ S_22 ) @ T2 ) ) ) ) ) ).

% WhileE
thf(fact_30_old_Oprod_Oinducts,axiom,
    ! [B: $tType,A: $tType,P: ( product_prod @ A @ B ) > $o,Prod: product_prod @ A @ B] :
      ( ! [A4: A,B4: B] : ( P @ ( product_Pair @ A @ B @ A4 @ B4 ) )
     => ( P @ Prod ) ) ).

% old.prod.inducts
thf(fact_31_old_Oprod_Oexhaust,axiom,
    ! [A: $tType,B: $tType,Y: product_prod @ A @ B] :
      ~ ! [A4: A,B4: B] :
          ( Y
         != ( product_Pair @ A @ B @ A4 @ B4 ) ) ).

% old.prod.exhaust
thf(fact_32_prod__induct7,axiom,
    ! [G: $tType,F: $tType,E: $tType,D: $tType,C: $tType,B: $tType,A: $tType,P: ( product_prod @ A @ ( product_prod @ B @ ( product_prod @ C @ ( product_prod @ D @ ( product_prod @ E @ ( product_prod @ F @ G ) ) ) ) ) ) > $o,X: product_prod @ A @ ( product_prod @ B @ ( product_prod @ C @ ( product_prod @ D @ ( product_prod @ E @ ( product_prod @ F @ G ) ) ) ) )] :
      ( ! [A4: A,B4: B,C6: C,D2: D,E2: E,F2: F,G2: G] : ( P @ ( product_Pair @ A @ ( product_prod @ B @ ( product_prod @ C @ ( product_prod @ D @ ( product_prod @ E @ ( product_prod @ F @ G ) ) ) ) ) @ A4 @ ( product_Pair @ B @ ( product_prod @ C @ ( product_prod @ D @ ( product_prod @ E @ ( product_prod @ F @ G ) ) ) ) @ B4 @ ( product_Pair @ C @ ( product_prod @ D @ ( product_prod @ E @ ( product_prod @ F @ G ) ) ) @ C6 @ ( product_Pair @ D @ ( product_prod @ E @ ( product_prod @ F @ G ) ) @ D2 @ ( product_Pair @ E @ ( product_prod @ F @ G ) @ E2 @ ( product_Pair @ F @ G @ F2 @ G2 ) ) ) ) ) ) )
     => ( P @ X ) ) ).

% prod_induct7
thf(fact_33_prod__induct6,axiom,
    ! [F: $tType,E: $tType,D: $tType,C: $tType,B: $tType,A: $tType,P: ( product_prod @ A @ ( product_prod @ B @ ( product_prod @ C @ ( product_prod @ D @ ( product_prod @ E @ F ) ) ) ) ) > $o,X: product_prod @ A @ ( product_prod @ B @ ( product_prod @ C @ ( product_prod @ D @ ( product_prod @ E @ F ) ) ) )] :
      ( ! [A4: A,B4: B,C6: C,D2: D,E2: E,F2: F] : ( P @ ( product_Pair @ A @ ( product_prod @ B @ ( product_prod @ C @ ( product_prod @ D @ ( product_prod @ E @ F ) ) ) ) @ A4 @ ( product_Pair @ B @ ( product_prod @ C @ ( product_prod @ D @ ( product_prod @ E @ F ) ) ) @ B4 @ ( product_Pair @ C @ ( product_prod @ D @ ( product_prod @ E @ F ) ) @ C6 @ ( product_Pair @ D @ ( product_prod @ E @ F ) @ D2 @ ( product_Pair @ E @ F @ E2 @ F2 ) ) ) ) ) )
     => ( P @ X ) ) ).

% prod_induct6
thf(fact_34_prod__induct5,axiom,
    ! [E: $tType,D: $tType,C: $tType,B: $tType,A: $tType,P: ( product_prod @ A @ ( product_prod @ B @ ( product_prod @ C @ ( product_prod @ D @ E ) ) ) ) > $o,X: product_prod @ A @ ( product_prod @ B @ ( product_prod @ C @ ( product_prod @ D @ E ) ) )] :
      ( ! [A4: A,B4: B,C6: C,D2: D,E2: E] : ( P @ ( product_Pair @ A @ ( product_prod @ B @ ( product_prod @ C @ ( product_prod @ D @ E ) ) ) @ A4 @ ( product_Pair @ B @ ( product_prod @ C @ ( product_prod @ D @ E ) ) @ B4 @ ( product_Pair @ C @ ( product_prod @ D @ E ) @ C6 @ ( product_Pair @ D @ E @ D2 @ E2 ) ) ) ) )
     => ( P @ X ) ) ).

% prod_induct5
thf(fact_35_prod__induct4,axiom,
    ! [D: $tType,C: $tType,B: $tType,A: $tType,P: ( product_prod @ A @ ( product_prod @ B @ ( product_prod @ C @ D ) ) ) > $o,X: product_prod @ A @ ( product_prod @ B @ ( product_prod @ C @ D ) )] :
      ( ! [A4: A,B4: B,C6: C,D2: D] : ( P @ ( product_Pair @ A @ ( product_prod @ B @ ( product_prod @ C @ D ) ) @ A4 @ ( product_Pair @ B @ ( product_prod @ C @ D ) @ B4 @ ( product_Pair @ C @ D @ C6 @ D2 ) ) ) )
     => ( P @ X ) ) ).

% prod_induct4
thf(fact_36_prod__induct3,axiom,
    ! [C: $tType,B: $tType,A: $tType,P: ( product_prod @ A @ ( product_prod @ B @ C ) ) > $o,X: product_prod @ A @ ( product_prod @ B @ C )] :
      ( ! [A4: A,B4: B,C6: C] : ( P @ ( product_Pair @ A @ ( product_prod @ B @ C ) @ A4 @ ( product_Pair @ B @ C @ B4 @ C6 ) ) )
     => ( P @ X ) ) ).

% prod_induct3
thf(fact_37_prod__cases7,axiom,
    ! [A: $tType,B: $tType,C: $tType,D: $tType,E: $tType,F: $tType,G: $tType,Y: product_prod @ A @ ( product_prod @ B @ ( product_prod @ C @ ( product_prod @ D @ ( product_prod @ E @ ( product_prod @ F @ G ) ) ) ) )] :
      ~ ! [A4: A,B4: B,C6: C,D2: D,E2: E,F2: F,G2: G] :
          ( Y
         != ( product_Pair @ A @ ( product_prod @ B @ ( product_prod @ C @ ( product_prod @ D @ ( product_prod @ E @ ( product_prod @ F @ G ) ) ) ) ) @ A4 @ ( product_Pair @ B @ ( product_prod @ C @ ( product_prod @ D @ ( product_prod @ E @ ( product_prod @ F @ G ) ) ) ) @ B4 @ ( product_Pair @ C @ ( product_prod @ D @ ( product_prod @ E @ ( product_prod @ F @ G ) ) ) @ C6 @ ( product_Pair @ D @ ( product_prod @ E @ ( product_prod @ F @ G ) ) @ D2 @ ( product_Pair @ E @ ( product_prod @ F @ G ) @ E2 @ ( product_Pair @ F @ G @ F2 @ G2 ) ) ) ) ) ) ) ).

% prod_cases7
thf(fact_38_prod__cases6,axiom,
    ! [A: $tType,B: $tType,C: $tType,D: $tType,E: $tType,F: $tType,Y: product_prod @ A @ ( product_prod @ B @ ( product_prod @ C @ ( product_prod @ D @ ( product_prod @ E @ F ) ) ) )] :
      ~ ! [A4: A,B4: B,C6: C,D2: D,E2: E,F2: F] :
          ( Y
         != ( product_Pair @ A @ ( product_prod @ B @ ( product_prod @ C @ ( product_prod @ D @ ( product_prod @ E @ F ) ) ) ) @ A4 @ ( product_Pair @ B @ ( product_prod @ C @ ( product_prod @ D @ ( product_prod @ E @ F ) ) ) @ B4 @ ( product_Pair @ C @ ( product_prod @ D @ ( product_prod @ E @ F ) ) @ C6 @ ( product_Pair @ D @ ( product_prod @ E @ F ) @ D2 @ ( product_Pair @ E @ F @ E2 @ F2 ) ) ) ) ) ) ).

% prod_cases6
thf(fact_39_prod__cases5,axiom,
    ! [A: $tType,B: $tType,C: $tType,D: $tType,E: $tType,Y: product_prod @ A @ ( product_prod @ B @ ( product_prod @ C @ ( product_prod @ D @ E ) ) )] :
      ~ ! [A4: A,B4: B,C6: C,D2: D,E2: E] :
          ( Y
         != ( product_Pair @ A @ ( product_prod @ B @ ( product_prod @ C @ ( product_prod @ D @ E ) ) ) @ A4 @ ( product_Pair @ B @ ( product_prod @ C @ ( product_prod @ D @ E ) ) @ B4 @ ( product_Pair @ C @ ( product_prod @ D @ E ) @ C6 @ ( product_Pair @ D @ E @ D2 @ E2 ) ) ) ) ) ).

% prod_cases5
thf(fact_40_prod__cases4,axiom,
    ! [A: $tType,B: $tType,C: $tType,D: $tType,Y: product_prod @ A @ ( product_prod @ B @ ( product_prod @ C @ D ) )] :
      ~ ! [A4: A,B4: B,C6: C,D2: D] :
          ( Y
         != ( product_Pair @ A @ ( product_prod @ B @ ( product_prod @ C @ D ) ) @ A4 @ ( product_Pair @ B @ ( product_prod @ C @ D ) @ B4 @ ( product_Pair @ C @ D @ C6 @ D2 ) ) ) ) ).

% prod_cases4
thf(fact_41_prod__cases3,axiom,
    ! [A: $tType,B: $tType,C: $tType,Y: product_prod @ A @ ( product_prod @ B @ C )] :
      ~ ! [A4: A,B4: B,C6: C] :
          ( Y
         != ( product_Pair @ A @ ( product_prod @ B @ C ) @ A4 @ ( product_Pair @ B @ C @ B4 @ C6 ) ) ) ).

% prod_cases3
thf(fact_42_Pair__inject,axiom,
    ! [A: $tType,B: $tType,A2: A,B2: B,A3: A,B3: B] :
      ( ( ( product_Pair @ A @ B @ A2 @ B2 )
        = ( product_Pair @ A @ B @ A3 @ B3 ) )
     => ~ ( ( A2 = A3 )
         => ( B2 != B3 ) ) ) ).

% Pair_inject
thf(fact_43_prod__cases,axiom,
    ! [B: $tType,A: $tType,P: ( product_prod @ A @ B ) > $o,P4: product_prod @ A @ B] :
      ( ! [A4: A,B4: B] : ( P @ ( product_Pair @ A @ B @ A4 @ B4 ) )
     => ( P @ P4 ) ) ).

% prod_cases
thf(fact_44_mem__Collect__eq,axiom,
    ! [A: $tType,A2: A,P: A > $o] :
      ( ( member @ A @ A2 @ ( collect @ A @ P ) )
      = ( P @ A2 ) ) ).

% mem_Collect_eq
thf(fact_45_Collect__mem__eq,axiom,
    ! [A: $tType,A5: set @ A] :
      ( ( collect @ A
        @ ^ [X3: A] : ( member @ A @ X3 @ A5 ) )
      = A5 ) ).

% Collect_mem_eq
thf(fact_46_Collect__cong,axiom,
    ! [A: $tType,P: A > $o,Q: A > $o] :
      ( ! [X4: A] :
          ( ( P @ X4 )
          = ( Q @ X4 ) )
     => ( ( collect @ A @ P )
        = ( collect @ A @ Q ) ) ) ).

% Collect_cong
thf(fact_47_ext,axiom,
    ! [B: $tType,A: $tType,F3: A > B,G3: A > B] :
      ( ! [X4: A] :
          ( ( F3 @ X4 )
          = ( G3 @ X4 ) )
     => ( F3 = G3 ) ) ).

% ext
thf(fact_48_surj__pair,axiom,
    ! [A: $tType,B: $tType,P4: product_prod @ A @ B] :
    ? [X4: A,Y3: B] :
      ( P4
      = ( product_Pair @ A @ B @ X4 @ Y3 ) ) ).

% surj_pair
thf(fact_49_n__not__Suc__n,axiom,
    ! [N: nat] :
      ( N
     != ( suc @ N ) ) ).

% n_not_Suc_n
thf(fact_50_Suc__inject,axiom,
    ! [X: nat,Y: nat] :
      ( ( ( suc @ X )
        = ( suc @ Y ) )
     => ( X = Y ) ) ).

% Suc_inject
thf(fact_51_big__step__determ,axiom,
    ! [C2: com,S: ( list @ char ) > int,T2: ( list @ char ) > int,U: ( list @ char ) > int] :
      ( ( big_big_step @ ( product_Pair @ com @ ( ( list @ char ) > int ) @ C2 @ S ) @ T2 )
     => ( ( big_big_step @ ( product_Pair @ com @ ( ( list @ char ) > int ) @ C2 @ S ) @ U )
       => ( U = T2 ) ) ) ).

% big_step_determ
thf(fact_52_sim__trans,axiom,
    ! [C2: com,C3: com,C7: com] :
      ( ! [S3: ( list @ char ) > int,T7: ( list @ char ) > int] :
          ( ( big_big_step @ ( product_Pair @ com @ ( ( list @ char ) > int ) @ C2 @ S3 ) @ T7 )
          = ( big_big_step @ ( product_Pair @ com @ ( ( list @ char ) > int ) @ C3 @ S3 ) @ T7 ) )
     => ( ! [S3: ( list @ char ) > int,T7: ( list @ char ) > int] :
            ( ( big_big_step @ ( product_Pair @ com @ ( ( list @ char ) > int ) @ C3 @ S3 ) @ T7 )
            = ( big_big_step @ ( product_Pair @ com @ ( ( list @ char ) > int ) @ C7 @ S3 ) @ T7 ) )
       => ! [S6: ( list @ char ) > int,T5: ( list @ char ) > int] :
            ( ( big_big_step @ ( product_Pair @ com @ ( ( list @ char ) > int ) @ C2 @ S6 ) @ T5 )
            = ( big_big_step @ ( product_Pair @ com @ ( ( list @ char ) > int ) @ C7 @ S6 ) @ T5 ) ) ) ) ).

% sim_trans
thf(fact_53_old_Oprod_Orec,axiom,
    ! [A: $tType,T: $tType,B: $tType,F1: A > B > T,A2: A,B2: B] :
      ( ( product_rec_prod @ A @ B @ T @ F1 @ ( product_Pair @ A @ B @ A2 @ B2 ) )
      = ( F1 @ A2 @ B2 ) ) ).

% old.prod.rec
thf(fact_54_com_Oinject_I4_J,axiom,
    ! [X51: bexp,X52: com,Y51: bexp,Y52: com] :
      ( ( ( while @ X51 @ X52 )
        = ( while @ Y51 @ Y52 ) )
      = ( ( X51 = Y51 )
        & ( X52 = Y52 ) ) ) ).

% com.inject(4)
thf(fact_55_While__False__ir__valid,axiom,
    ! [P: ( ( list @ char ) > int ) > ( ( list @ char ) > int ) > $o,B2: bexp,C3: com,Q: ( ( list @ char ) > int ) > ( ( list @ char ) > int ) > $o,C2: com] :
      ( ( relati167478067_valid
        @ ^ [S5: ( list @ char ) > int,S7: ( list @ char ) > int] :
            ( ( P @ S5 @ S7 )
            & ~ ( bval @ B2 @ S5 ) )
        @ skip
        @ C3
        @ Q )
     => ( relati167478067_valid @ P @ ( while @ B2 @ C2 ) @ C3 @ Q ) ) ).

% While_False_ir_valid
thf(fact_56_While__True__ir__valid,axiom,
    ! [P: ( ( list @ char ) > int ) > ( ( list @ char ) > int ) > $o,B2: bexp,C2: com,C3: com,Q: ( ( list @ char ) > int ) > ( ( list @ char ) > int ) > $o] :
      ( ( relati167478067_valid
        @ ^ [S5: ( list @ char ) > int,S7: ( list @ char ) > int] :
            ( ( P @ S5 @ S7 )
            & ( bval @ B2 @ S5 ) )
        @ ( seq @ C2 @ ( while @ B2 @ C2 ) )
        @ C3
        @ Q )
     => ( relati167478067_valid @ P @ ( while @ B2 @ C2 ) @ C3 @ Q ) ) ).

% While_True_ir_valid
thf(fact_57_get__back_Osimps_I2_J,axiom,
    ! [A: $tType,P: ( ( list @ char ) > int ) > A > $o,B2: bexp,C2: com,N: nat] :
      ( ( relati1010904253t_back @ A @ P @ B2 @ C2 @ ( suc @ N ) )
      = ( ^ [T4: ( list @ char ) > int,T6: A] :
          ? [S5: ( list @ char ) > int] :
            ( ( big_big_step @ ( product_Pair @ com @ ( ( list @ char ) > int ) @ C2 @ S5 ) @ T4 )
            & ( bval @ B2 @ S5 )
            & ( relati1010904253t_back @ A @ P @ B2 @ C2 @ N @ S5 @ T6 ) ) ) ) ).

% get_back.simps(2)
thf(fact_58_Skip__ir__valid,axiom,
    ! [Q: ( ( list @ char ) > int ) > ( ( list @ char ) > int ) > $o,P: ( ( list @ char ) > int ) > ( ( list @ char ) > int ) > $o,C3: com] :
      ( ! [T7: ( list @ char ) > int,T8: ( list @ char ) > int] :
          ( ( Q @ T7 @ T8 )
         => ? [S8: ( list @ char ) > int] :
              ( ( P @ T7 @ S8 )
              & ( big_big_step @ ( product_Pair @ com @ ( ( list @ char ) > int ) @ C3 @ S8 ) @ T8 ) ) )
     => ( relati167478067_valid @ P @ skip @ C3 @ Q ) ) ).

% Skip_ir_valid
thf(fact_59_While__backwards__frontier__ir__valid_H,axiom,
    ! [P: nat > ( ( list @ char ) > int ) > ( ( list @ char ) > int ) > $o,K: nat,B2: bexp,C2: com,Q: ( ( list @ char ) > int ) > ( ( list @ char ) > int ) > $o,C3: com,T2: ( list @ char ) > int,T3: ( list @ char ) > int] :
      ( ! [N2: nat,T7: ( list @ char ) > int,T8: ( list @ char ) > int] :
          ( ( P @ ( plus_plus @ nat @ K @ ( suc @ N2 ) ) @ T7 @ T8 )
         => ? [S6: ( list @ char ) > int] :
              ( ( P @ ( plus_plus @ nat @ K @ N2 ) @ S6 @ T8 )
              & ( bval @ B2 @ S6 )
              & ( big_big_step @ ( product_Pair @ com @ ( ( list @ char ) > int ) @ C2 @ S6 ) @ T7 ) ) )
     => ( ! [T7: ( list @ char ) > int,T8: ( list @ char ) > int] :
            ( ( Q @ T7 @ T8 )
           => ? [S6: ( list @ char ) > int,S8: ( list @ char ) > int] :
                ( ? [N3: nat] : ( P @ ( plus_plus @ nat @ K @ N3 ) @ S6 @ S8 )
                & ( big_big_step @ ( product_Pair @ com @ ( ( list @ char ) > int ) @ ( while @ B2 @ C2 ) @ S6 ) @ T7 )
                & ( big_big_step @ ( product_Pair @ com @ ( ( list @ char ) > int ) @ C3 @ S8 ) @ T8 ) ) )
       => ( ( Q @ T2 @ T3 )
         => ? [S3: ( list @ char ) > int,S4: ( list @ char ) > int] :
              ( ( P @ K @ S3 @ S4 )
              & ( big_big_step @ ( product_Pair @ com @ ( ( list @ char ) > int ) @ ( while @ B2 @ C2 ) @ S3 ) @ T2 )
              & ( big_big_step @ ( product_Pair @ com @ ( ( list @ char ) > int ) @ C3 @ S4 ) @ T3 ) ) ) ) ) ).

% While_backwards_frontier_ir_valid'
thf(fact_60_sym__ir__valid,axiom,
    ! [P: ( ( list @ char ) > int ) > ( ( list @ char ) > int ) > $o,C3: com,C2: com,Q: ( ( list @ char ) > int ) > ( ( list @ char ) > int ) > $o] :
      ( ( relati167478067_valid @ ( relati1716060877e_flip @ P ) @ C3 @ C2 @ ( relati1716060877e_flip @ Q ) )
     => ( relati167478067_valid @ P @ C2 @ C3 @ Q ) ) ).

% sym_ir_valid
thf(fact_61_pred__equals__eq2,axiom,
    ! [B: $tType,A: $tType,R: set @ ( product_prod @ A @ B ),S9: set @ ( product_prod @ A @ B )] :
      ( ( ( ^ [X3: A,Y4: B] : ( member @ ( product_prod @ A @ B ) @ ( product_Pair @ A @ B @ X3 @ Y4 ) @ R ) )
        = ( ^ [X3: A,Y4: B] : ( member @ ( product_prod @ A @ B ) @ ( product_Pair @ A @ B @ X3 @ Y4 ) @ S9 ) ) )
      = ( R = S9 ) ) ).

% pred_equals_eq2
thf(fact_62_internal__case__prod__conv,axiom,
    ! [B: $tType,A: $tType,C: $tType,C2: B > C > A,A2: B,B2: C] :
      ( ( produc2004651681e_prod @ B @ C @ A @ C2 @ ( product_Pair @ B @ C @ A2 @ B2 ) )
      = ( C2 @ A2 @ B2 ) ) ).

% internal_case_prod_conv
thf(fact_63_com_Oinject_I2_J,axiom,
    ! [X31: com,X32: com,Y31: com,Y32: com] :
      ( ( ( seq @ X31 @ X32 )
        = ( seq @ Y31 @ Y32 ) )
      = ( ( X31 = Y31 )
        & ( X32 = Y32 ) ) ) ).

% com.inject(2)
thf(fact_64_add__Suc__right,axiom,
    ! [M: nat,N: nat] :
      ( ( plus_plus @ nat @ M @ ( suc @ N ) )
      = ( suc @ ( plus_plus @ nat @ M @ N ) ) ) ).

% add_Suc_right
thf(fact_65_Seq__ir__valid,axiom,
    ! [P: ( ( list @ char ) > int ) > ( ( list @ char ) > int ) > $o,C2: com,C3: com,Q: ( ( list @ char ) > int ) > ( ( list @ char ) > int ) > $o,D3: com,D4: com,R: ( ( list @ char ) > int ) > ( ( list @ char ) > int ) > $o] :
      ( ( relati167478067_valid @ P @ C2 @ C3 @ Q )
     => ( ( relati167478067_valid @ Q @ D3 @ D4 @ R )
       => ( relati167478067_valid @ P @ ( seq @ C2 @ D3 ) @ ( seq @ C3 @ D4 ) @ R ) ) ) ).

% Seq_ir_valid
thf(fact_66_meh__simp,axiom,
    ! [S2: ( list @ char ) > int,T3: ( list @ char ) > int] :
      ( ( big_big_step @ ( product_Pair @ com @ ( ( list @ char ) > int ) @ skip @ S2 ) @ T3 )
      = ( S2 = T3 ) ) ).

% meh_simp
thf(fact_67_Seq2__ir__valid,axiom,
    ! [P: ( ( list @ char ) > int ) > ( ( list @ char ) > int ) > $o,C2: com,Q: ( ( list @ char ) > int ) > ( ( list @ char ) > int ) > $o,D3: com,C3: com,R: ( ( list @ char ) > int ) > ( ( list @ char ) > int ) > $o] :
      ( ( relati167478067_valid @ P @ C2 @ skip @ Q )
     => ( ( relati167478067_valid @ Q @ D3 @ C3 @ R )
       => ( relati167478067_valid @ P @ ( seq @ C2 @ D3 ) @ C3 @ R ) ) ) ).

% Seq2_ir_valid
thf(fact_68_Seq1__ir__valid,axiom,
    ! [P: ( ( list @ char ) > int ) > ( ( list @ char ) > int ) > $o,C2: com,C3: com,Q: ( ( list @ char ) > int ) > ( ( list @ char ) > int ) > $o,D3: com,R: ( ( list @ char ) > int ) > ( ( list @ char ) > int ) > $o] :
      ( ( relati167478067_valid @ P @ C2 @ C3 @ Q )
     => ( ( relati167478067_valid @ Q @ D3 @ skip @ R )
       => ( relati167478067_valid @ P @ ( seq @ C2 @ D3 ) @ C3 @ R ) ) ) ).

% Seq1_ir_valid
thf(fact_69_com_Odistinct_I3_J,axiom,
    ! [X31: com,X32: com] :
      ( skip
     != ( seq @ X31 @ X32 ) ) ).

% com.distinct(3)
thf(fact_70_com_Odistinct_I17_J,axiom,
    ! [X31: com,X32: com,X51: bexp,X52: com] :
      ( ( seq @ X31 @ X32 )
     != ( while @ X51 @ X52 ) ) ).

% com.distinct(17)
thf(fact_71_com_Odistinct_I7_J,axiom,
    ! [X51: bexp,X52: com] :
      ( skip
     != ( while @ X51 @ X52 ) ) ).

% com.distinct(7)
thf(fact_72_add__Suc__shift,axiom,
    ! [M: nat,N: nat] :
      ( ( plus_plus @ nat @ ( suc @ M ) @ N )
      = ( plus_plus @ nat @ M @ ( suc @ N ) ) ) ).

% add_Suc_shift
thf(fact_73_nat__arith_Osuc1,axiom,
    ! [A5: nat,K: nat,A2: nat] :
      ( ( A5
        = ( plus_plus @ nat @ K @ A2 ) )
     => ( ( suc @ A5 )
        = ( plus_plus @ nat @ K @ ( suc @ A2 ) ) ) ) ).

% nat_arith.suc1
thf(fact_74_add__Suc,axiom,
    ! [M: nat,N: nat] :
      ( ( plus_plus @ nat @ ( suc @ M ) @ N )
      = ( suc @ ( plus_plus @ nat @ M @ N ) ) ) ).

% add_Suc
thf(fact_75_ir__valid__Seq1_H,axiom,
    ! [P: ( ( list @ char ) > int ) > ( ( list @ char ) > int ) > $o,C1: com,C22: com,C3: com,Q: ( ( list @ char ) > int ) > ( ( list @ char ) > int ) > $o] :
      ( ( relati167478067_valid @ P @ ( seq @ C1 @ C22 ) @ C3 @ Q )
     => ( relati167478067_valid
        @ ^ [T4: ( list @ char ) > int,T6: ( list @ char ) > int] :
          ? [S5: ( list @ char ) > int,S7: ( list @ char ) > int] :
            ( ( P @ S5 @ S7 )
            & ( big_big_step @ ( product_Pair @ com @ ( ( list @ char ) > int ) @ C1 @ S5 ) @ T4 )
            & ( big_big_step @ ( product_Pair @ com @ ( ( list @ char ) > int ) @ C3 @ S7 ) @ T6 )
            & ? [U2: ( list @ char ) > int] :
                ( ( big_big_step @ ( product_Pair @ com @ ( ( list @ char ) > int ) @ C22 @ T4 ) @ U2 )
                & ( Q @ U2 @ T6 ) ) )
        @ C22
        @ skip
        @ Q ) ) ).

% ir_valid_Seq1'
thf(fact_76_flip__def,axiom,
    ( relati1716060877e_flip
    = ( ^ [P3: ( ( list @ char ) > int ) > ( ( list @ char ) > int ) > $o,S5: ( list @ char ) > int,S7: ( list @ char ) > int] : ( P3 @ S7 @ S5 ) ) ) ).

% flip_def
thf(fact_77_ir__valid__Seq1,axiom,
    ! [P: ( ( list @ char ) > int ) > ( ( list @ char ) > int ) > $o,C1: com,C22: com,C3: com,Q: ( ( list @ char ) > int ) > ( ( list @ char ) > int ) > $o] :
      ( ( relati167478067_valid @ P @ ( seq @ C1 @ C22 ) @ C3 @ Q )
     => ( relati167478067_valid @ P @ C1 @ C3
        @ ^ [T4: ( list @ char ) > int,T6: ( list @ char ) > int] :
          ? [S5: ( list @ char ) > int,S7: ( list @ char ) > int] :
            ( ( P @ S5 @ S7 )
            & ( big_big_step @ ( product_Pair @ com @ ( ( list @ char ) > int ) @ C1 @ S5 ) @ T4 )
            & ( big_big_step @ ( product_Pair @ com @ ( ( list @ char ) > int ) @ C3 @ S7 ) @ T6 )
            & ? [U2: ( list @ char ) > int] :
                ( ( big_big_step @ ( product_Pair @ com @ ( ( list @ char ) > int ) @ C22 @ T4 ) @ U2 )
                & ( Q @ U2 @ T6 ) ) ) ) ) ).

% ir_valid_Seq1
thf(fact_78_SeqE,axiom,
    ! [C1: com,C22: com,S1: ( list @ char ) > int,S32: ( list @ char ) > int] :
      ( ( big_big_step @ ( product_Pair @ com @ ( ( list @ char ) > int ) @ ( seq @ C1 @ C22 ) @ S1 ) @ S32 )
     => ~ ! [S_22: ( list @ char ) > int] :
            ( ( big_big_step @ ( product_Pair @ com @ ( ( list @ char ) > int ) @ C1 @ S1 ) @ S_22 )
           => ~ ( big_big_step @ ( product_Pair @ com @ ( ( list @ char ) > int ) @ C22 @ S_22 ) @ S32 ) ) ) ).

% SeqE
thf(fact_79_Seq__assoc,axiom,
    ! [C1: com,C22: com,C32: com,S: ( list @ char ) > int,S2: ( list @ char ) > int] :
      ( ( big_big_step @ ( product_Pair @ com @ ( ( list @ char ) > int ) @ ( seq @ ( seq @ C1 @ C22 ) @ C32 ) @ S ) @ S2 )
      = ( big_big_step @ ( product_Pair @ com @ ( ( list @ char ) > int ) @ ( seq @ C1 @ ( seq @ C22 @ C32 ) ) @ S ) @ S2 ) ) ).

% Seq_assoc
thf(fact_80_Seq,axiom,
    ! [C_1: com,S_1: ( list @ char ) > int,S_2: ( list @ char ) > int,C_2: com,S_3: ( list @ char ) > int] :
      ( ( big_big_step @ ( product_Pair @ com @ ( ( list @ char ) > int ) @ C_1 @ S_1 ) @ S_2 )
     => ( ( big_big_step @ ( product_Pair @ com @ ( ( list @ char ) > int ) @ C_2 @ S_2 ) @ S_3 )
       => ( big_big_step @ ( product_Pair @ com @ ( ( list @ char ) > int ) @ ( seq @ C_1 @ C_2 ) @ S_1 ) @ S_3 ) ) ) ).

% Seq
thf(fact_81_SkipE,axiom,
    ! [S: ( list @ char ) > int,T2: ( list @ char ) > int] :
      ( ( big_big_step @ ( product_Pair @ com @ ( ( list @ char ) > int ) @ skip @ S ) @ T2 )
     => ( T2 = S ) ) ).

% SkipE
thf(fact_82_Skip,axiom,
    ! [S: ( list @ char ) > int] : ( big_big_step @ ( product_Pair @ com @ ( ( list @ char ) > int ) @ skip @ S ) @ S ) ).

% Skip
thf(fact_83_ir__valid__track__history,axiom,
    ! [P: ( ( list @ char ) > int ) > ( ( list @ char ) > int ) > $o,C2: com,C3: com,Q: ( ( list @ char ) > int ) > ( ( list @ char ) > int ) > $o,S: ( list @ char ) > int,S2: ( list @ char ) > int] :
      ( ( relati167478067_valid @ P @ C2 @ C3 @ Q )
     => ( relati167478067_valid @ P @ C2 @ C3
        @ ^ [T4: ( list @ char ) > int,T6: ( list @ char ) > int] :
            ( ( Q @ S @ S2 )
            & ? [S5: ( list @ char ) > int,S7: ( list @ char ) > int] :
                ( ( P @ S5 @ S7 )
                & ( big_big_step @ ( product_Pair @ com @ ( ( list @ char ) > int ) @ C2 @ S5 ) @ T4 )
                & ( big_big_step @ ( product_Pair @ com @ ( ( list @ char ) > int ) @ C3 @ S7 ) @ T6 ) ) ) ) ) ).

% ir_valid_track_history
thf(fact_84_ir__valid__While1,axiom,
    ! [P: ( ( list @ char ) > int ) > ( ( list @ char ) > int ) > $o,B2: bexp,C2: com,K: nat,C3: com,Q: ( ( list @ char ) > int ) > ( ( list @ char ) > int ) > $o] :
      ( ( relati167478067_valid @ ( relati1010904253t_back @ ( ( list @ char ) > int ) @ P @ B2 @ C2 @ K ) @ ( while @ B2 @ C2 ) @ C3 @ Q )
     => ( relati167478067_valid
        @ ^ [S5: ( list @ char ) > int,S7: ( list @ char ) > int] :
            ( ( relati1010904253t_back @ ( ( list @ char ) > int ) @ P @ B2 @ C2 @ K @ S5 @ S7 )
            & ( bval @ B2 @ S5 ) )
        @ C2
        @ skip
        @ ^ [T4: ( list @ char ) > int,T6: ( list @ char ) > int] :
            ( ( relati1010904253t_back @ ( ( list @ char ) > int ) @ P @ B2 @ C2 @ ( suc @ K ) @ T4 @ T6 )
            & ? [U2: ( list @ char ) > int,U3: ( list @ char ) > int] :
                ( ( big_big_step @ ( product_Pair @ com @ ( ( list @ char ) > int ) @ ( while @ B2 @ C2 ) @ T4 ) @ U2 )
                & ( big_big_step @ ( product_Pair @ com @ ( ( list @ char ) > int ) @ C3 @ T6 ) @ U3 )
                & ( Q @ U2 @ U3 ) ) ) ) ) ).

% ir_valid_While1
thf(fact_85_add__right__cancel,axiom,
    ! [A: $tType] :
      ( ( cancel_semigroup_add @ A )
     => ! [B2: A,A2: A,C2: A] :
          ( ( ( plus_plus @ A @ B2 @ A2 )
            = ( plus_plus @ A @ C2 @ A2 ) )
          = ( B2 = C2 ) ) ) ).

% add_right_cancel
thf(fact_86_add__left__cancel,axiom,
    ! [A: $tType] :
      ( ( cancel_semigroup_add @ A )
     => ! [A2: A,B2: A,C2: A] :
          ( ( ( plus_plus @ A @ A2 @ B2 )
            = ( plus_plus @ A @ A2 @ C2 ) )
          = ( B2 = C2 ) ) ) ).

% add_left_cancel
thf(fact_87_ir__valid__If,axiom,
    ! [P: ( ( list @ char ) > int ) > ( ( list @ char ) > int ) > $o,B2: bexp,C1: com,C22: com,C3: com,Q: ( ( list @ char ) > int ) > ( ( list @ char ) > int ) > $o] :
      ( ( relati167478067_valid @ P @ ( if @ B2 @ C1 @ C22 ) @ C3 @ Q )
     => ( ( relati167478067_valid
          @ ^ [S5: ( list @ char ) > int,S7: ( list @ char ) > int] :
              ( ( P @ S5 @ S7 )
              & ( bval @ B2 @ S5 ) )
          @ C1
          @ C3
          @ ^ [T4: ( list @ char ) > int,T6: ( list @ char ) > int] :
              ( ( Q @ T4 @ T6 )
              & ? [S5: ( list @ char ) > int,S7: ( list @ char ) > int] :
                  ( ( P @ S5 @ S7 )
                  & ( big_big_step @ ( product_Pair @ com @ ( ( list @ char ) > int ) @ C1 @ S5 ) @ T4 )
                  & ( big_big_step @ ( product_Pair @ com @ ( ( list @ char ) > int ) @ C3 @ S7 ) @ T6 )
                  & ( bval @ B2 @ S5 ) ) ) )
        & ( relati167478067_valid
          @ ^ [S5: ( list @ char ) > int,S7: ( list @ char ) > int] :
              ( ( P @ S5 @ S7 )
              & ~ ( bval @ B2 @ S5 ) )
          @ C22
          @ C3
          @ ^ [T4: ( list @ char ) > int,T6: ( list @ char ) > int] :
              ( ( Q @ T4 @ T6 )
              & ? [S5: ( list @ char ) > int,S7: ( list @ char ) > int] :
                  ( ( P @ S5 @ S7 )
                  & ( big_big_step @ ( product_Pair @ com @ ( ( list @ char ) > int ) @ C22 @ S5 ) @ T4 )
                  & ( big_big_step @ ( product_Pair @ com @ ( ( list @ char ) > int ) @ C3 @ S7 ) @ T6 )
                  & ~ ( bval @ B2 @ S5 ) ) ) ) ) ) ).

% ir_valid_If
thf(fact_88_while__unfold,axiom,
    ! [B2: bexp,C2: com,S6: ( list @ char ) > int,T5: ( list @ char ) > int] :
      ( ( big_big_step @ ( product_Pair @ com @ ( ( list @ char ) > int ) @ ( while @ B2 @ C2 ) @ S6 ) @ T5 )
      = ( big_big_step @ ( product_Pair @ com @ ( ( list @ char ) > int ) @ ( if @ B2 @ ( seq @ C2 @ ( while @ B2 @ C2 ) ) @ skip ) @ S6 ) @ T5 ) ) ).

% while_unfold
thf(fact_89_If__True__ir__valid,axiom,
    ! [P: ( ( list @ char ) > int ) > ( ( list @ char ) > int ) > $o,B2: bexp,C_1: com,C3: com,Q: ( ( list @ char ) > int ) > ( ( list @ char ) > int ) > $o,C_2: com] :
      ( ( relati167478067_valid
        @ ^ [A6: ( list @ char ) > int,C4: ( list @ char ) > int] :
            ( ( P @ A6 @ C4 )
            & ( bval @ B2 @ A6 ) )
        @ C_1
        @ C3
        @ Q )
     => ( relati167478067_valid @ P @ ( if @ B2 @ C_1 @ C_2 ) @ C3 @ Q ) ) ).

% If_True_ir_valid
thf(fact_90_If__False__ir__valid,axiom,
    ! [P: ( ( list @ char ) > int ) > ( ( list @ char ) > int ) > $o,B2: bexp,C_2: com,C3: com,Q: ( ( list @ char ) > int ) > ( ( list @ char ) > int ) > $o,C_1: com] :
      ( ( relati167478067_valid
        @ ^ [A6: ( list @ char ) > int,C4: ( list @ char ) > int] :
            ( ( P @ A6 @ C4 )
            & ~ ( bval @ B2 @ A6 ) )
        @ C_2
        @ C3
        @ Q )
     => ( relati167478067_valid @ P @ ( if @ B2 @ C_1 @ C_2 ) @ C3 @ Q ) ) ).

% If_False_ir_valid
thf(fact_91_ir__While__True,axiom,
    ! [P: ( ( list @ char ) > int ) > ( ( list @ char ) > int ) > $o,B2: bexp,C2: com,C3: com,Q: ( ( list @ char ) > int ) > ( ( list @ char ) > int ) > $o] :
      ( ( relati1493963588_hoare
        @ ^ [S5: ( list @ char ) > int,S7: ( list @ char ) > int] :
            ( ( P @ S5 @ S7 )
            & ( bval @ B2 @ S5 ) )
        @ ( seq @ C2 @ ( while @ B2 @ C2 ) )
        @ C3
        @ Q )
     => ( relati1493963588_hoare @ P @ ( while @ B2 @ C2 ) @ C3 @ Q ) ) ).

% ir_While_True
thf(fact_92_com_Oinject_I3_J,axiom,
    ! [X41: bexp,X42: com,X43: com,Y41: bexp,Y42: com,Y43: com] :
      ( ( ( if @ X41 @ X42 @ X43 )
        = ( if @ Y41 @ Y42 @ Y43 ) )
      = ( ( X41 = Y41 )
        & ( X42 = Y42 )
        & ( X43 = Y43 ) ) ) ).

% com.inject(3)
thf(fact_93_ir__Skip__Skip,axiom,
    ! [P: ( ( list @ char ) > int ) > ( ( list @ char ) > int ) > $o] : ( relati1493963588_hoare @ P @ skip @ skip @ P ) ).

% ir_Skip_Skip
thf(fact_94_ir__hoare__Skip__Skip,axiom,
    ! [P: ( ( list @ char ) > int ) > ( ( list @ char ) > int ) > $o,Q: ( ( list @ char ) > int ) > ( ( list @ char ) > int ) > $o] :
      ( ( relati1493963588_hoare @ P @ skip @ skip @ Q )
      = ( ! [S5: ( list @ char ) > int,S7: ( list @ char ) > int] :
            ( ( Q @ S5 @ S7 )
           => ( P @ S5 @ S7 ) ) ) ) ).

% ir_hoare_Skip_Skip
thf(fact_95_ir__disj,axiom,
    ! [P_1: ( ( list @ char ) > int ) > ( ( list @ char ) > int ) > $o,C2: com,C3: com,Q_1: ( ( list @ char ) > int ) > ( ( list @ char ) > int ) > $o,P_2: ( ( list @ char ) > int ) > ( ( list @ char ) > int ) > $o,Q_2: ( ( list @ char ) > int ) > ( ( list @ char ) > int ) > $o] :
      ( ( relati1493963588_hoare @ P_1 @ C2 @ C3 @ Q_1 )
     => ( ( relati1493963588_hoare @ P_2 @ C2 @ C3 @ Q_2 )
       => ( relati1493963588_hoare
          @ ^ [S5: ( list @ char ) > int,S7: ( list @ char ) > int] :
              ( ( P_1 @ S5 @ S7 )
              | ( P_2 @ S5 @ S7 ) )
          @ C2
          @ C3
          @ ^ [T4: ( list @ char ) > int,T6: ( list @ char ) > int] :
              ( ( Q_1 @ T4 @ T6 )
              | ( Q_2 @ T4 @ T6 ) ) ) ) ) ).

% ir_disj
thf(fact_96_ir__pre,axiom,
    ! [P: ( ( list @ char ) > int ) > ( ( list @ char ) > int ) > $o,C2: com,C3: com,Q: ( ( list @ char ) > int ) > ( ( list @ char ) > int ) > $o,P2: ( ( list @ char ) > int ) > ( ( list @ char ) > int ) > $o] :
      ( ( relati1493963588_hoare @ P @ C2 @ C3 @ Q )
     => ( ! [S3: ( list @ char ) > int,S4: ( list @ char ) > int] :
            ( ( P @ S3 @ S4 )
           => ( P2 @ S3 @ S4 ) )
       => ( relati1493963588_hoare @ P2 @ C2 @ C3 @ Q ) ) ) ).

% ir_pre
thf(fact_97_ir__post,axiom,
    ! [P: ( ( list @ char ) > int ) > ( ( list @ char ) > int ) > $o,C2: com,C3: com,Q: ( ( list @ char ) > int ) > ( ( list @ char ) > int ) > $o,Q2: ( ( list @ char ) > int ) > ( ( list @ char ) > int ) > $o] :
      ( ( relati1493963588_hoare @ P @ C2 @ C3 @ Q )
     => ( ! [S3: ( list @ char ) > int,S4: ( list @ char ) > int] :
            ( ( Q2 @ S3 @ S4 )
           => ( Q @ S3 @ S4 ) )
       => ( relati1493963588_hoare @ P @ C2 @ C3 @ Q2 ) ) ) ).

% ir_post
thf(fact_98_ir__conseq,axiom,
    ! [P: ( ( list @ char ) > int ) > ( ( list @ char ) > int ) > $o,C2: com,C3: com,Q: ( ( list @ char ) > int ) > ( ( list @ char ) > int ) > $o,P2: ( ( list @ char ) > int ) > ( ( list @ char ) > int ) > $o,Q2: ( ( list @ char ) > int ) > ( ( list @ char ) > int ) > $o] :
      ( ( relati1493963588_hoare @ P @ C2 @ C3 @ Q )
     => ( ! [S3: ( list @ char ) > int,S4: ( list @ char ) > int] :
            ( ( P @ S3 @ S4 )
           => ( P2 @ S3 @ S4 ) )
       => ( ! [S3: ( list @ char ) > int,S4: ( list @ char ) > int] :
              ( ( Q2 @ S3 @ S4 )
             => ( Q @ S3 @ S4 ) )
         => ( relati1493963588_hoare @ P2 @ C2 @ C3 @ Q2 ) ) ) ) ).

% ir_conseq
thf(fact_99_ir__If__False,axiom,
    ! [P: ( ( list @ char ) > int ) > ( ( list @ char ) > int ) > $o,B2: bexp,C_2: com,C3: com,Q: ( ( list @ char ) > int ) > ( ( list @ char ) > int ) > $o,C_1: com] :
      ( ( relati1493963588_hoare
        @ ^ [S5: ( list @ char ) > int,S7: ( list @ char ) > int] :
            ( ( P @ S5 @ S7 )
            & ~ ( bval @ B2 @ S5 ) )
        @ C_2
        @ C3
        @ Q )
     => ( relati1493963588_hoare @ P @ ( if @ B2 @ C_1 @ C_2 ) @ C3 @ Q ) ) ).

% ir_If_False
thf(fact_100_ir__If__True,axiom,
    ! [P: ( ( list @ char ) > int ) > ( ( list @ char ) > int ) > $o,B2: bexp,C_1: com,C3: com,Q: ( ( list @ char ) > int ) > ( ( list @ char ) > int ) > $o,C_2: com] :
      ( ( relati1493963588_hoare
        @ ^ [S5: ( list @ char ) > int,S7: ( list @ char ) > int] :
            ( ( P @ S5 @ S7 )
            & ( bval @ B2 @ S5 ) )
        @ C_1
        @ C3
        @ Q )
     => ( relati1493963588_hoare @ P @ ( if @ B2 @ C_1 @ C_2 ) @ C3 @ Q ) ) ).

% ir_If_True
thf(fact_101_soundness,axiom,
    ! [P: ( ( list @ char ) > int ) > ( ( list @ char ) > int ) > $o,C2: com,C3: com,Q: ( ( list @ char ) > int ) > ( ( list @ char ) > int ) > $o] :
      ( ( relati1493963588_hoare @ P @ C2 @ C3 @ Q )
     => ( relati167478067_valid @ P @ C2 @ C3 @ Q ) ) ).

% soundness
thf(fact_102_com_Odistinct_I19_J,axiom,
    ! [X41: bexp,X42: com,X43: com,X51: bexp,X52: com] :
      ( ( if @ X41 @ X42 @ X43 )
     != ( while @ X51 @ X52 ) ) ).

% com.distinct(19)
thf(fact_103_com_Odistinct_I5_J,axiom,
    ! [X41: bexp,X42: com,X43: com] :
      ( skip
     != ( if @ X41 @ X42 @ X43 ) ) ).

% com.distinct(5)
thf(fact_104_com_Odistinct_I15_J,axiom,
    ! [X31: com,X32: com,X41: bexp,X42: com,X43: com] :
      ( ( seq @ X31 @ X32 )
     != ( if @ X41 @ X42 @ X43 ) ) ).

% com.distinct(15)
thf(fact_105_ir__sym,axiom,
    ! [P: ( ( list @ char ) > int ) > ( ( list @ char ) > int ) > $o,C2: com,C3: com,Q: ( ( list @ char ) > int ) > ( ( list @ char ) > int ) > $o] :
      ( ( relati1493963588_hoare @ ( relati1716060877e_flip @ P ) @ C2 @ C3 @ ( relati1716060877e_flip @ Q ) )
     => ( relati1493963588_hoare @ P @ C3 @ C2 @ Q ) ) ).

% ir_sym
thf(fact_106_ir__Seq1,axiom,
    ! [P: ( ( list @ char ) > int ) > ( ( list @ char ) > int ) > $o,C2: com,C3: com,Q: ( ( list @ char ) > int ) > ( ( list @ char ) > int ) > $o,D3: com,R: ( ( list @ char ) > int ) > ( ( list @ char ) > int ) > $o] :
      ( ( relati1493963588_hoare @ P @ C2 @ C3 @ Q )
     => ( ( relati1493963588_hoare @ Q @ D3 @ skip @ R )
       => ( relati1493963588_hoare @ P @ ( seq @ C2 @ D3 ) @ C3 @ R ) ) ) ).

% ir_Seq1
thf(fact_107_commute__if,axiom,
    ! [B1: bexp,B22: bexp,C11: com,C12: com,C22: com,S6: ( list @ char ) > int,T5: ( list @ char ) > int] :
      ( ( big_big_step @ ( product_Pair @ com @ ( ( list @ char ) > int ) @ ( if @ B1 @ ( if @ B22 @ C11 @ C12 ) @ C22 ) @ S6 ) @ T5 )
      = ( big_big_step @ ( product_Pair @ com @ ( ( list @ char ) > int ) @ ( if @ B22 @ ( if @ B1 @ C11 @ C22 ) @ ( if @ B1 @ C12 @ C22 ) ) @ S6 ) @ T5 ) ) ).

% commute_if
thf(fact_108_triv__if,axiom,
    ! [B2: bexp,C2: com,S6: ( list @ char ) > int,T5: ( list @ char ) > int] :
      ( ( big_big_step @ ( product_Pair @ com @ ( ( list @ char ) > int ) @ ( if @ B2 @ C2 @ C2 ) @ S6 ) @ T5 )
      = ( big_big_step @ ( product_Pair @ com @ ( ( list @ char ) > int ) @ C2 @ S6 ) @ T5 ) ) ).

% triv_if
thf(fact_109_ab__semigroup__add__class_Oadd__ac_I1_J,axiom,
    ! [A: $tType] :
      ( ( ab_semigroup_add @ A )
     => ! [A2: A,B2: A,C2: A] :
          ( ( plus_plus @ A @ ( plus_plus @ A @ A2 @ B2 ) @ C2 )
          = ( plus_plus @ A @ A2 @ ( plus_plus @ A @ B2 @ C2 ) ) ) ) ).

% ab_semigroup_add_class.add_ac(1)
thf(fact_110_add__mono__thms__linordered__semiring_I4_J,axiom,
    ! [A: $tType] :
      ( ( ordere779506340up_add @ A )
     => ! [I: A,J: A,K: A,L: A] :
          ( ( ( I = J )
            & ( K = L ) )
         => ( ( plus_plus @ A @ I @ K )
            = ( plus_plus @ A @ J @ L ) ) ) ) ).

% add_mono_thms_linordered_semiring(4)
thf(fact_111_group__cancel_Oadd1,axiom,
    ! [A: $tType] :
      ( ( comm_monoid_add @ A )
     => ! [A5: A,K: A,A2: A,B2: A] :
          ( ( A5
            = ( plus_plus @ A @ K @ A2 ) )
         => ( ( plus_plus @ A @ A5 @ B2 )
            = ( plus_plus @ A @ K @ ( plus_plus @ A @ A2 @ B2 ) ) ) ) ) ).

% group_cancel.add1
thf(fact_112_group__cancel_Oadd2,axiom,
    ! [A: $tType] :
      ( ( comm_monoid_add @ A )
     => ! [B5: A,K: A,B2: A,A2: A] :
          ( ( B5
            = ( plus_plus @ A @ K @ B2 ) )
         => ( ( plus_plus @ A @ A2 @ B5 )
            = ( plus_plus @ A @ K @ ( plus_plus @ A @ A2 @ B2 ) ) ) ) ) ).

% group_cancel.add2
thf(fact_113_add_Oassoc,axiom,
    ! [A: $tType] :
      ( ( semigroup_add @ A )
     => ! [A2: A,B2: A,C2: A] :
          ( ( plus_plus @ A @ ( plus_plus @ A @ A2 @ B2 ) @ C2 )
          = ( plus_plus @ A @ A2 @ ( plus_plus @ A @ B2 @ C2 ) ) ) ) ).

% add.assoc
thf(fact_114_add_Oleft__cancel,axiom,
    ! [A: $tType] :
      ( ( group_add @ A )
     => ! [A2: A,B2: A,C2: A] :
          ( ( ( plus_plus @ A @ A2 @ B2 )
            = ( plus_plus @ A @ A2 @ C2 ) )
          = ( B2 = C2 ) ) ) ).

% add.left_cancel
thf(fact_115_add_Oright__cancel,axiom,
    ! [A: $tType] :
      ( ( group_add @ A )
     => ! [B2: A,A2: A,C2: A] :
          ( ( ( plus_plus @ A @ B2 @ A2 )
            = ( plus_plus @ A @ C2 @ A2 ) )
          = ( B2 = C2 ) ) ) ).

% add.right_cancel
thf(fact_116_add_Ocommute,axiom,
    ! [A: $tType] :
      ( ( ab_semigroup_add @ A )
     => ( ( plus_plus @ A )
        = ( ^ [A6: A,B6: A] : ( plus_plus @ A @ B6 @ A6 ) ) ) ) ).

% add.commute
thf(fact_117_add_Oleft__commute,axiom,
    ! [A: $tType] :
      ( ( ab_semigroup_add @ A )
     => ! [B2: A,A2: A,C2: A] :
          ( ( plus_plus @ A @ B2 @ ( plus_plus @ A @ A2 @ C2 ) )
          = ( plus_plus @ A @ A2 @ ( plus_plus @ A @ B2 @ C2 ) ) ) ) ).

% add.left_commute
thf(fact_118_add__left__imp__eq,axiom,
    ! [A: $tType] :
      ( ( cancel_semigroup_add @ A )
     => ! [A2: A,B2: A,C2: A] :
          ( ( ( plus_plus @ A @ A2 @ B2 )
            = ( plus_plus @ A @ A2 @ C2 ) )
         => ( B2 = C2 ) ) ) ).

% add_left_imp_eq
thf(fact_119_add__right__imp__eq,axiom,
    ! [A: $tType] :
      ( ( cancel_semigroup_add @ A )
     => ! [B2: A,A2: A,C2: A] :
          ( ( ( plus_plus @ A @ B2 @ A2 )
            = ( plus_plus @ A @ C2 @ A2 ) )
         => ( B2 = C2 ) ) ) ).

% add_right_imp_eq
thf(fact_120_ir__Skip,axiom,
    ! [Q: ( ( list @ char ) > int ) > ( ( list @ char ) > int ) > $o,P: ( ( list @ char ) > int ) > ( ( list @ char ) > int ) > $o,C3: com] :
      ( ! [T7: ( list @ char ) > int,T8: ( list @ char ) > int] :
          ( ( Q @ T7 @ T8 )
         => ? [S8: ( list @ char ) > int] :
              ( ( P @ T7 @ S8 )
              & ( big_big_step @ ( product_Pair @ com @ ( ( list @ char ) > int ) @ C3 @ S8 ) @ T8 ) ) )
     => ( relati1493963588_hoare @ P @ skip @ C3 @ Q ) ) ).

% ir_Skip
thf(fact_121_IfFalse,axiom,
    ! [B2: bexp,S: ( list @ char ) > int,C_2: com,T2: ( list @ char ) > int,C_1: com] :
      ( ~ ( bval @ B2 @ S )
     => ( ( big_big_step @ ( product_Pair @ com @ ( ( list @ char ) > int ) @ C_2 @ S ) @ T2 )
       => ( big_big_step @ ( product_Pair @ com @ ( ( list @ char ) > int ) @ ( if @ B2 @ C_1 @ C_2 ) @ S ) @ T2 ) ) ) ).

% IfFalse
thf(fact_122_IfTrue,axiom,
    ! [B2: bexp,S: ( list @ char ) > int,C_1: com,T2: ( list @ char ) > int,C_2: com] :
      ( ( bval @ B2 @ S )
     => ( ( big_big_step @ ( product_Pair @ com @ ( ( list @ char ) > int ) @ C_1 @ S ) @ T2 )
       => ( big_big_step @ ( product_Pair @ com @ ( ( list @ char ) > int ) @ ( if @ B2 @ C_1 @ C_2 ) @ S ) @ T2 ) ) ) ).

% IfTrue
thf(fact_123_IfE,axiom,
    ! [B2: bexp,C1: com,C22: com,S: ( list @ char ) > int,T2: ( list @ char ) > int] :
      ( ( big_big_step @ ( product_Pair @ com @ ( ( list @ char ) > int ) @ ( if @ B2 @ C1 @ C22 ) @ S ) @ T2 )
     => ( ( ( bval @ B2 @ S )
         => ~ ( big_big_step @ ( product_Pair @ com @ ( ( list @ char ) > int ) @ C1 @ S ) @ T2 ) )
       => ~ ( ~ ( bval @ B2 @ S )
           => ~ ( big_big_step @ ( product_Pair @ com @ ( ( list @ char ) > int ) @ C22 @ S ) @ T2 ) ) ) ) ).

% IfE
thf(fact_124_ir__While__False,axiom,
    ! [P: ( ( list @ char ) > int ) > ( ( list @ char ) > int ) > $o,B2: bexp,C3: com,Q: ( ( list @ char ) > int ) > ( ( list @ char ) > int ) > $o,C2: com] :
      ( ( relati1493963588_hoare
        @ ^ [S5: ( list @ char ) > int,S7: ( list @ char ) > int] :
            ( ( P @ S5 @ S7 )
            & ~ ( bval @ B2 @ S5 ) )
        @ skip
        @ C3
        @ Q )
     => ( relati1493963588_hoare @ P @ ( while @ B2 @ C2 ) @ C3 @ Q ) ) ).

% ir_While_False
thf(fact_125_com_Oexhaust,axiom,
    ! [Y: com] :
      ( ( Y != skip )
     => ( ! [X21: list @ char,X22: aexp] :
            ( Y
           != ( assign @ X21 @ X22 ) )
       => ( ! [X312: com,X322: com] :
              ( Y
             != ( seq @ X312 @ X322 ) )
         => ( ! [X412: bexp,X422: com,X432: com] :
                ( Y
               != ( if @ X412 @ X422 @ X432 ) )
           => ~ ! [X512: bexp,X522: com] :
                  ( Y
                 != ( while @ X512 @ X522 ) ) ) ) ) ) ).

% com.exhaust
thf(fact_126_com_Oinduct,axiom,
    ! [P: com > $o,Com: com] :
      ( ( P @ skip )
     => ( ! [X12: list @ char,X23: aexp] : ( P @ ( assign @ X12 @ X23 ) )
       => ( ! [X12: com,X23: com] :
              ( ( P @ X12 )
             => ( ( P @ X23 )
               => ( P @ ( seq @ X12 @ X23 ) ) ) )
         => ( ! [X12: bexp,X23: com,X33: com] :
                ( ( P @ X23 )
               => ( ( P @ X33 )
                 => ( P @ ( if @ X12 @ X23 @ X33 ) ) ) )
           => ( ! [X12: bexp,X23: com] :
                  ( ( P @ X23 )
                 => ( P @ ( while @ X12 @ X23 ) ) )
             => ( P @ Com ) ) ) ) ) ) ).

% com.induct
thf(fact_127_image2__def,axiom,
    ! [A: $tType,B: $tType,C: $tType] :
      ( ( bNF_Greatest_image2 @ C @ A @ B )
      = ( ^ [A7: set @ C,F4: C > A,G4: C > B] :
            ( collect @ ( product_prod @ A @ B )
            @ ^ [Uu: product_prod @ A @ B] :
              ? [A6: C] :
                ( ( Uu
                  = ( product_Pair @ A @ B @ ( F4 @ A6 ) @ ( G4 @ A6 ) ) )
                & ( member @ C @ A6 @ A7 ) ) ) ) ) ).

% image2_def
thf(fact_128_While__backwards__frontier__ir__valid,axiom,
    ! [P: nat > ( ( list @ char ) > int ) > ( ( list @ char ) > int ) > $o,B2: bexp,C2: com,C3: com,Q: ( ( list @ char ) > int ) > ( ( list @ char ) > int ) > $o] :
      ( ! [N2: nat] :
          ( relati167478067_valid
          @ ^ [S5: ( list @ char ) > int,S7: ( list @ char ) > int] :
              ( ( P @ N2 @ S5 @ S7 )
              & ( bval @ B2 @ S5 ) )
          @ C2
          @ skip
          @ ( P @ ( suc @ N2 ) ) )
     => ( ( relati167478067_valid
          @ ^ [S5: ( list @ char ) > int,S7: ( list @ char ) > int] :
            ? [N4: nat] : ( P @ N4 @ S5 @ S7 )
          @ ( while @ B2 @ C2 )
          @ C3
          @ Q )
       => ( relati167478067_valid @ ( P @ ( zero_zero @ nat ) ) @ ( while @ B2 @ C2 ) @ C3 @ Q ) ) ) ).

% While_backwards_frontier_ir_valid
thf(fact_129_is__num__normalize_I1_J,axiom,
    ! [A: $tType] :
      ( ( neg_numeral @ A )
     => ! [A2: A,B2: A,C2: A] :
          ( ( plus_plus @ A @ ( plus_plus @ A @ A2 @ B2 ) @ C2 )
          = ( plus_plus @ A @ A2 @ ( plus_plus @ A @ B2 @ C2 ) ) ) ) ).

% is_num_normalize(1)
thf(fact_130_com_Oinject_I1_J,axiom,
    ! [X212: list @ char,X222: aexp,Y21: list @ char,Y22: aexp] :
      ( ( ( assign @ X212 @ X222 )
        = ( assign @ Y21 @ Y22 ) )
      = ( ( X212 = Y21 )
        & ( X222 = Y22 ) ) ) ).

% com.inject(1)
thf(fact_131_add_Oleft__neutral,axiom,
    ! [A: $tType] :
      ( ( monoid_add @ A )
     => ! [A2: A] :
          ( ( plus_plus @ A @ ( zero_zero @ A ) @ A2 )
          = A2 ) ) ).

% add.left_neutral
thf(fact_132_add_Oright__neutral,axiom,
    ! [A: $tType] :
      ( ( monoid_add @ A )
     => ! [A2: A] :
          ( ( plus_plus @ A @ A2 @ ( zero_zero @ A ) )
          = A2 ) ) ).

% add.right_neutral
thf(fact_133_double__zero,axiom,
    ! [A: $tType] :
      ( ( linord219039673up_add @ A )
     => ! [A2: A] :
          ( ( ( plus_plus @ A @ A2 @ A2 )
            = ( zero_zero @ A ) )
          = ( A2
            = ( zero_zero @ A ) ) ) ) ).

% double_zero
thf(fact_134_double__zero__sym,axiom,
    ! [A: $tType] :
      ( ( linord219039673up_add @ A )
     => ! [A2: A] :
          ( ( ( zero_zero @ A )
            = ( plus_plus @ A @ A2 @ A2 ) )
          = ( A2
            = ( zero_zero @ A ) ) ) ) ).

% double_zero_sym
thf(fact_135_add__cancel__left__left,axiom,
    ! [A: $tType] :
      ( ( cancel1352612707id_add @ A )
     => ! [B2: A,A2: A] :
          ( ( ( plus_plus @ A @ B2 @ A2 )
            = A2 )
          = ( B2
            = ( zero_zero @ A ) ) ) ) ).

% add_cancel_left_left
thf(fact_136_add__cancel__left__right,axiom,
    ! [A: $tType] :
      ( ( cancel1352612707id_add @ A )
     => ! [A2: A,B2: A] :
          ( ( ( plus_plus @ A @ A2 @ B2 )
            = A2 )
          = ( B2
            = ( zero_zero @ A ) ) ) ) ).

% add_cancel_left_right
thf(fact_137_add__cancel__right__left,axiom,
    ! [A: $tType] :
      ( ( cancel1352612707id_add @ A )
     => ! [A2: A,B2: A] :
          ( ( A2
            = ( plus_plus @ A @ B2 @ A2 ) )
          = ( B2
            = ( zero_zero @ A ) ) ) ) ).

% add_cancel_right_left
thf(fact_138_add__cancel__right__right,axiom,
    ! [A: $tType] :
      ( ( cancel1352612707id_add @ A )
     => ! [A2: A,B2: A] :
          ( ( A2
            = ( plus_plus @ A @ A2 @ B2 ) )
          = ( B2
            = ( zero_zero @ A ) ) ) ) ).

% add_cancel_right_right
thf(fact_139_add__eq__0__iff__both__eq__0,axiom,
    ! [A: $tType] :
      ( ( canoni770627133id_add @ A )
     => ! [X: A,Y: A] :
          ( ( ( plus_plus @ A @ X @ Y )
            = ( zero_zero @ A ) )
          = ( ( X
              = ( zero_zero @ A ) )
            & ( Y
              = ( zero_zero @ A ) ) ) ) ) ).

% add_eq_0_iff_both_eq_0
thf(fact_140_zero__eq__add__iff__both__eq__0,axiom,
    ! [A: $tType] :
      ( ( canoni770627133id_add @ A )
     => ! [X: A,Y: A] :
          ( ( ( zero_zero @ A )
            = ( plus_plus @ A @ X @ Y ) )
          = ( ( X
              = ( zero_zero @ A ) )
            & ( Y
              = ( zero_zero @ A ) ) ) ) ) ).

% zero_eq_add_iff_both_eq_0
thf(fact_141_add__is__0,axiom,
    ! [M: nat,N: nat] :
      ( ( ( plus_plus @ nat @ M @ N )
        = ( zero_zero @ nat ) )
      = ( ( M
          = ( zero_zero @ nat ) )
        & ( N
          = ( zero_zero @ nat ) ) ) ) ).

% add_is_0
thf(fact_142_Nat_Oadd__0__right,axiom,
    ! [M: nat] :
      ( ( plus_plus @ nat @ M @ ( zero_zero @ nat ) )
      = M ) ).

% Nat.add_0_right
thf(fact_143_zero__reorient,axiom,
    ! [A: $tType] :
      ( ( zero @ A )
     => ! [X: A] :
          ( ( ( zero_zero @ A )
            = X )
          = ( X
            = ( zero_zero @ A ) ) ) ) ).

% zero_reorient
thf(fact_144_comm__monoid__add__class_Oadd__0,axiom,
    ! [A: $tType] :
      ( ( comm_monoid_add @ A )
     => ! [A2: A] :
          ( ( plus_plus @ A @ ( zero_zero @ A ) @ A2 )
          = A2 ) ) ).

% comm_monoid_add_class.add_0
thf(fact_145_add_Ocomm__neutral,axiom,
    ! [A: $tType] :
      ( ( comm_monoid_add @ A )
     => ! [A2: A] :
          ( ( plus_plus @ A @ A2 @ ( zero_zero @ A ) )
          = A2 ) ) ).

% add.comm_neutral
thf(fact_146_add_Ogroup__left__neutral,axiom,
    ! [A: $tType] :
      ( ( group_add @ A )
     => ! [A2: A] :
          ( ( plus_plus @ A @ ( zero_zero @ A ) @ A2 )
          = A2 ) ) ).

% add.group_left_neutral
thf(fact_147_nat_Odistinct_I1_J,axiom,
    ! [X2: nat] :
      ( ( zero_zero @ nat )
     != ( suc @ X2 ) ) ).

% nat.distinct(1)
thf(fact_148_old_Onat_Odistinct_I2_J,axiom,
    ! [Nat3: nat] :
      ( ( suc @ Nat3 )
     != ( zero_zero @ nat ) ) ).

% old.nat.distinct(2)
thf(fact_149_old_Onat_Odistinct_I1_J,axiom,
    ! [Nat2: nat] :
      ( ( zero_zero @ nat )
     != ( suc @ Nat2 ) ) ).

% old.nat.distinct(1)
thf(fact_150_nat_OdiscI,axiom,
    ! [Nat: nat,X2: nat] :
      ( ( Nat
        = ( suc @ X2 ) )
     => ( Nat
       != ( zero_zero @ nat ) ) ) ).

% nat.discI
thf(fact_151_nat__induct,axiom,
    ! [P: nat > $o,N: nat] :
      ( ( P @ ( zero_zero @ nat ) )
     => ( ! [N2: nat] :
            ( ( P @ N2 )
           => ( P @ ( suc @ N2 ) ) )
       => ( P @ N ) ) ) ).

% nat_induct
thf(fact_152_diff__induct,axiom,
    ! [P: nat > nat > $o,M: nat,N: nat] :
      ( ! [X4: nat] : ( P @ X4 @ ( zero_zero @ nat ) )
     => ( ! [Y3: nat] : ( P @ ( zero_zero @ nat ) @ ( suc @ Y3 ) )
       => ( ! [X4: nat,Y3: nat] :
              ( ( P @ X4 @ Y3 )
             => ( P @ ( suc @ X4 ) @ ( suc @ Y3 ) ) )
         => ( P @ M @ N ) ) ) ) ).

% diff_induct
thf(fact_153_zero__induct,axiom,
    ! [P: nat > $o,K: nat] :
      ( ( P @ K )
     => ( ! [N2: nat] :
            ( ( P @ ( suc @ N2 ) )
           => ( P @ N2 ) )
       => ( P @ ( zero_zero @ nat ) ) ) ) ).

% zero_induct
thf(fact_154_Suc__neq__Zero,axiom,
    ! [M: nat] :
      ( ( suc @ M )
     != ( zero_zero @ nat ) ) ).

% Suc_neq_Zero
thf(fact_155_Zero__neq__Suc,axiom,
    ! [M: nat] :
      ( ( zero_zero @ nat )
     != ( suc @ M ) ) ).

% Zero_neq_Suc
thf(fact_156_Zero__not__Suc,axiom,
    ! [M: nat] :
      ( ( zero_zero @ nat )
     != ( suc @ M ) ) ).

% Zero_not_Suc
thf(fact_157_old_Onat_Oexhaust,axiom,
    ! [Y: nat] :
      ( ( Y
       != ( zero_zero @ nat ) )
     => ~ ! [Nat4: nat] :
            ( Y
           != ( suc @ Nat4 ) ) ) ).

% old.nat.exhaust
thf(fact_158_old_Onat_Oinducts,axiom,
    ! [P: nat > $o,Nat: nat] :
      ( ( P @ ( zero_zero @ nat ) )
     => ( ! [Nat4: nat] :
            ( ( P @ Nat4 )
           => ( P @ ( suc @ Nat4 ) ) )
       => ( P @ Nat ) ) ) ).

% old.nat.inducts
thf(fact_159_not0__implies__Suc,axiom,
    ! [N: nat] :
      ( ( N
       != ( zero_zero @ nat ) )
     => ? [M2: nat] :
          ( N
          = ( suc @ M2 ) ) ) ).

% not0_implies_Suc
thf(fact_160_plus__nat_Oadd__0,axiom,
    ! [N: nat] :
      ( ( plus_plus @ nat @ ( zero_zero @ nat ) @ N )
      = N ) ).

% plus_nat.add_0
thf(fact_161_add__eq__self__zero,axiom,
    ! [M: nat,N: nat] :
      ( ( ( plus_plus @ nat @ M @ N )
        = M )
     => ( N
        = ( zero_zero @ nat ) ) ) ).

% add_eq_self_zero
thf(fact_162_image2__eqI,axiom,
    ! [A: $tType,C: $tType,B: $tType,B2: A,F3: B > A,X: B,C2: C,G3: B > C,A5: set @ B] :
      ( ( B2
        = ( F3 @ X ) )
     => ( ( C2
          = ( G3 @ X ) )
       => ( ( member @ B @ X @ A5 )
         => ( member @ ( product_prod @ A @ C ) @ ( product_Pair @ A @ C @ B2 @ C2 ) @ ( bNF_Greatest_image2 @ B @ A @ C @ A5 @ F3 @ G3 ) ) ) ) ) ).

% image2_eqI
thf(fact_163_com_Odistinct_I13_J,axiom,
    ! [X212: list @ char,X222: aexp,X51: bexp,X52: com] :
      ( ( assign @ X212 @ X222 )
     != ( while @ X51 @ X52 ) ) ).

% com.distinct(13)
thf(fact_164_com_Odistinct_I1_J,axiom,
    ! [X212: list @ char,X222: aexp] :
      ( skip
     != ( assign @ X212 @ X222 ) ) ).

% com.distinct(1)
thf(fact_165_com_Odistinct_I9_J,axiom,
    ! [X212: list @ char,X222: aexp,X31: com,X32: com] :
      ( ( assign @ X212 @ X222 )
     != ( seq @ X31 @ X32 ) ) ).

% com.distinct(9)
thf(fact_166_com_Odistinct_I11_J,axiom,
    ! [X212: list @ char,X222: aexp,X41: bexp,X42: com,X43: com] :
      ( ( assign @ X212 @ X222 )
     != ( if @ X41 @ X42 @ X43 ) ) ).

% com.distinct(11)
thf(fact_167_get__back_Osimps_I1_J,axiom,
    ! [A: $tType,P: ( ( list @ char ) > int ) > A > $o,B2: bexp,C2: com] :
      ( ( relati1010904253t_back @ A @ P @ B2 @ C2 @ ( zero_zero @ nat ) )
      = P ) ).

% get_back.simps(1)
thf(fact_168_one__is__add,axiom,
    ! [M: nat,N: nat] :
      ( ( ( suc @ ( zero_zero @ nat ) )
        = ( plus_plus @ nat @ M @ N ) )
      = ( ( ( M
            = ( suc @ ( zero_zero @ nat ) ) )
          & ( N
            = ( zero_zero @ nat ) ) )
        | ( ( M
            = ( zero_zero @ nat ) )
          & ( N
            = ( suc @ ( zero_zero @ nat ) ) ) ) ) ) ).

% one_is_add
thf(fact_169_add__is__1,axiom,
    ! [M: nat,N: nat] :
      ( ( ( plus_plus @ nat @ M @ N )
        = ( suc @ ( zero_zero @ nat ) ) )
      = ( ( ( M
            = ( suc @ ( zero_zero @ nat ) ) )
          & ( N
            = ( zero_zero @ nat ) ) )
        | ( ( M
            = ( zero_zero @ nat ) )
          & ( N
            = ( suc @ ( zero_zero @ nat ) ) ) ) ) ) ).

% add_is_1
thf(fact_170_ir__While__backwards__frontier,axiom,
    ! [P: nat > ( ( list @ char ) > int ) > ( ( list @ char ) > int ) > $o,B2: bexp,C2: com,C3: com,Q: ( ( list @ char ) > int ) > ( ( list @ char ) > int ) > $o] :
      ( ! [N2: nat] :
          ( relati1493963588_hoare
          @ ^ [S5: ( list @ char ) > int,S7: ( list @ char ) > int] :
              ( ( P @ N2 @ S5 @ S7 )
              & ( bval @ B2 @ S5 ) )
          @ C2
          @ skip
          @ ( P @ ( suc @ N2 ) ) )
     => ( ( relati1493963588_hoare
          @ ^ [S5: ( list @ char ) > int,S7: ( list @ char ) > int] :
            ? [N4: nat] : ( P @ N4 @ S5 @ S7 )
          @ ( while @ B2 @ C2 )
          @ C3
          @ Q )
       => ( relati1493963588_hoare @ ( P @ ( zero_zero @ nat ) ) @ ( while @ B2 @ C2 ) @ C3 @ Q ) ) ) ).

% ir_While_backwards_frontier
thf(fact_171_com_Osize__gen_I4_J,axiom,
    ! [X41: bexp,X42: com,X43: com] :
      ( ( size_com @ ( if @ X41 @ X42 @ X43 ) )
      = ( plus_plus @ nat @ ( plus_plus @ nat @ ( size_com @ X42 ) @ ( size_com @ X43 ) ) @ ( suc @ ( zero_zero @ nat ) ) ) ) ).

% com.size_gen(4)
thf(fact_172_com_Osize__gen_I3_J,axiom,
    ! [X31: com,X32: com] :
      ( ( size_com @ ( seq @ X31 @ X32 ) )
      = ( plus_plus @ nat @ ( plus_plus @ nat @ ( size_com @ X31 ) @ ( size_com @ X32 ) ) @ ( suc @ ( zero_zero @ nat ) ) ) ) ).

% com.size_gen(3)
thf(fact_173_com_Osize__gen_I5_J,axiom,
    ! [X51: bexp,X52: com] :
      ( ( size_com @ ( while @ X51 @ X52 ) )
      = ( plus_plus @ nat @ ( size_com @ X52 ) @ ( suc @ ( zero_zero @ nat ) ) ) ) ).

% com.size_gen(5)
thf(fact_174_com_Osize_I9_J,axiom,
    ! [X41: bexp,X42: com,X43: com] :
      ( ( size_size @ com @ ( if @ X41 @ X42 @ X43 ) )
      = ( plus_plus @ nat @ ( plus_plus @ nat @ ( size_size @ com @ X42 ) @ ( size_size @ com @ X43 ) ) @ ( suc @ ( zero_zero @ nat ) ) ) ) ).

% com.size(9)
thf(fact_175_size__neq__size__imp__neq,axiom,
    ! [A: $tType] :
      ( ( size @ A )
     => ! [X: A,Y: A] :
          ( ( ( size_size @ A @ X )
           != ( size_size @ A @ Y ) )
         => ( X != Y ) ) ) ).

% size_neq_size_imp_neq
thf(fact_176_com_Osize_I6_J,axiom,
    ( ( size_size @ com @ skip )
    = ( zero_zero @ nat ) ) ).

% com.size(6)
thf(fact_177_com_Osize_I7_J,axiom,
    ! [X212: list @ char,X222: aexp] :
      ( ( size_size @ com @ ( assign @ X212 @ X222 ) )
      = ( zero_zero @ nat ) ) ).

% com.size(7)
thf(fact_178_com_Osize__gen_I1_J,axiom,
    ( ( size_com @ skip )
    = ( zero_zero @ nat ) ) ).

% com.size_gen(1)
thf(fact_179_com_Osize__gen_I2_J,axiom,
    ! [X212: list @ char,X222: aexp] :
      ( ( size_com @ ( assign @ X212 @ X222 ) )
      = ( zero_zero @ nat ) ) ).

% com.size_gen(2)
thf(fact_180_com_Osize_I10_J,axiom,
    ! [X51: bexp,X52: com] :
      ( ( size_size @ com @ ( while @ X51 @ X52 ) )
      = ( plus_plus @ nat @ ( size_size @ com @ X52 ) @ ( suc @ ( zero_zero @ nat ) ) ) ) ).

% com.size(10)
thf(fact_181_com_Osize_I8_J,axiom,
    ! [X31: com,X32: com] :
      ( ( size_size @ com @ ( seq @ X31 @ X32 ) )
      = ( plus_plus @ nat @ ( plus_plus @ nat @ ( size_size @ com @ X31 ) @ ( size_size @ com @ X32 ) ) @ ( suc @ ( zero_zero @ nat ) ) ) ) ).

% com.size(8)
thf(fact_182_Euclid__induct,axiom,
    ! [P: nat > nat > $o,A2: nat,B2: nat] :
      ( ! [A4: nat,B4: nat] :
          ( ( P @ A4 @ B4 )
          = ( P @ B4 @ A4 ) )
     => ( ! [A4: nat] : ( P @ A4 @ ( zero_zero @ nat ) )
       => ( ! [A4: nat,B4: nat] :
              ( ( P @ A4 @ B4 )
             => ( P @ A4 @ ( plus_plus @ nat @ A4 @ B4 ) ) )
         => ( P @ A2 @ B2 ) ) ) ) ).

% Euclid_induct
thf(fact_183_dependent__nat__choice,axiom,
    ! [A: $tType,P: nat > A > $o,Q: nat > A > A > $o] :
      ( ? [X_1: A] : ( P @ ( zero_zero @ nat ) @ X_1 )
     => ( ! [X4: A,N2: nat] :
            ( ( P @ N2 @ X4 )
           => ? [Y5: A] :
                ( ( P @ ( suc @ N2 ) @ Y5 )
                & ( Q @ N2 @ X4 @ Y5 ) ) )
       => ? [F2: nat > A] :
          ! [N3: nat] :
            ( ( P @ N3 @ ( F2 @ N3 ) )
            & ( Q @ N3 @ ( F2 @ N3 ) @ ( F2 @ ( suc @ N3 ) ) ) ) ) ) ).

% dependent_nat_choice
thf(fact_184_verit__sum__simplify,axiom,
    ! [A: $tType] :
      ( ( cancel1352612707id_add @ A )
     => ! [A2: A] :
          ( ( plus_plus @ A @ A2 @ ( zero_zero @ A ) )
          = A2 ) ) ).

% verit_sum_simplify
thf(fact_185_add__0__iff,axiom,
    ! [A: $tType] :
      ( ( semiri456707255roduct @ A )
     => ! [B2: A,A2: A] :
          ( ( B2
            = ( plus_plus @ A @ B2 @ A2 ) )
          = ( A2
            = ( zero_zero @ A ) ) ) ) ).

% add_0_iff
thf(fact_186_relImage__def,axiom,
    ! [A: $tType,B: $tType] :
      ( ( bNF_Gr1317331620lImage @ B @ A )
      = ( ^ [R2: set @ ( product_prod @ B @ B ),F4: B > A] :
            ( collect @ ( product_prod @ A @ A )
            @ ^ [Uu: product_prod @ A @ A] :
              ? [A1: B,A22: B] :
                ( ( Uu
                  = ( product_Pair @ A @ A @ ( F4 @ A1 ) @ ( F4 @ A22 ) ) )
                & ( member @ ( product_prod @ B @ B ) @ ( product_Pair @ B @ B @ A1 @ A22 ) @ R2 ) ) ) ) ) ).

% relImage_def
thf(fact_187_relInvImage__def,axiom,
    ! [B: $tType,A: $tType] :
      ( ( bNF_Gr2107612801vImage @ A @ B )
      = ( ^ [A7: set @ A,R2: set @ ( product_prod @ B @ B ),F4: A > B] :
            ( collect @ ( product_prod @ A @ A )
            @ ^ [Uu: product_prod @ A @ A] :
              ? [A1: A,A22: A] :
                ( ( Uu
                  = ( product_Pair @ A @ A @ A1 @ A22 ) )
                & ( member @ A @ A1 @ A7 )
                & ( member @ A @ A22 @ A7 )
                & ( member @ ( product_prod @ B @ B ) @ ( product_Pair @ B @ B @ ( F4 @ A1 ) @ ( F4 @ A22 ) ) @ R2 ) ) ) ) ) ).

% relInvImage_def
thf(fact_188_fun__cong__unused__0,axiom,
    ! [A: $tType,B: $tType,C: $tType] :
      ( ( zero @ B )
     => ! [F3: ( A > B ) > C,G3: C] :
          ( ( F3
            = ( ^ [X3: A > B] : G3 ) )
         => ( ( F3
              @ ^ [X3: A] : ( zero_zero @ B ) )
            = G3 ) ) ) ).

% fun_cong_unused_0
thf(fact_189_divides__aux__eq,axiom,
    ! [A: $tType] :
      ( ( unique1598680935umeral @ A )
     => ! [Q4: A,R3: A] :
          ( ( unique455577585es_aux @ A @ ( product_Pair @ A @ A @ Q4 @ R3 ) )
          = ( R3
            = ( zero_zero @ A ) ) ) ) ).

% divides_aux_eq
thf(fact_190_image2p__def,axiom,
    ! [D: $tType,B: $tType,A: $tType,C: $tType] :
      ( ( bNF_Greatest_image2p @ C @ A @ D @ B )
      = ( ^ [F4: C > A,G4: D > B,R2: C > D > $o,X3: A,Y4: B] :
          ? [X5: C,Y6: D] :
            ( ( R2 @ X5 @ Y6 )
            & ( ( F4 @ X5 )
              = X3 )
            & ( ( G4 @ Y6 )
              = Y4 ) ) ) ) ).

% image2p_def
thf(fact_191_image2pI,axiom,
    ! [A: $tType,C: $tType,D: $tType,B: $tType,R: A > B > $o,X: A,Y: B,F3: A > C,G3: B > D] :
      ( ( R @ X @ Y )
     => ( bNF_Greatest_image2p @ A @ C @ B @ D @ F3 @ G3 @ R @ ( F3 @ X ) @ ( G3 @ Y ) ) ) ).

% image2pI
thf(fact_192_image2pE,axiom,
    ! [D: $tType,B: $tType,A: $tType,C: $tType,F3: A > B,G3: C > D,R: A > C > $o,Fx: B,Gy: D] :
      ( ( bNF_Greatest_image2p @ A @ B @ C @ D @ F3 @ G3 @ R @ Fx @ Gy )
     => ~ ! [X4: A] :
            ( ( Fx
              = ( F3 @ X4 ) )
           => ! [Y3: C] :
                ( ( Gy
                  = ( G3 @ Y3 ) )
               => ~ ( R @ X4 @ Y3 ) ) ) ) ).

% image2pE
thf(fact_193_zero__natural_Orsp,axiom,
    ( ( zero_zero @ nat )
    = ( zero_zero @ nat ) ) ).

% zero_natural.rsp
thf(fact_194_option_Osize__neq,axiom,
    ! [A: $tType,X: option @ A] :
      ( ( size_size @ ( option @ A ) @ X )
     != ( zero_zero @ nat ) ) ).

% option.size_neq
thf(fact_195_option_Osize_I3_J,axiom,
    ! [A: $tType] :
      ( ( size_size @ ( option @ A ) @ ( none @ A ) )
      = ( suc @ ( zero_zero @ nat ) ) ) ).

% option.size(3)
thf(fact_196_option_Osize_I4_J,axiom,
    ! [A: $tType,X2: A] :
      ( ( size_size @ ( option @ A ) @ ( some @ A @ X2 ) )
      = ( suc @ ( zero_zero @ nat ) ) ) ).

% option.size(4)
thf(fact_197_option_Osize__gen_I2_J,axiom,
    ! [A: $tType,X: A > nat,X2: A] :
      ( ( size_option @ A @ X @ ( some @ A @ X2 ) )
      = ( plus_plus @ nat @ ( X @ X2 ) @ ( suc @ ( zero_zero @ nat ) ) ) ) ).

% option.size_gen(2)
thf(fact_198_option_Osize__gen_I1_J,axiom,
    ! [A: $tType,X: A > nat] :
      ( ( size_option @ A @ X @ ( none @ A ) )
      = ( suc @ ( zero_zero @ nat ) ) ) ).

% option.size_gen(1)
thf(fact_199_tuple__isomorphism_Osize__neq,axiom,
    ! [A: $tType,B: $tType,C: $tType,X: tuple_isomorphism @ A @ B @ C] :
      ( ( size_size @ ( tuple_isomorphism @ A @ B @ C ) @ X )
     != ( zero_zero @ nat ) ) ).

% tuple_isomorphism.size_neq
thf(fact_200_prod_Osize__neq,axiom,
    ! [A: $tType,B: $tType,X: product_prod @ A @ B] :
      ( ( size_size @ ( product_prod @ A @ B ) @ X )
     != ( zero_zero @ nat ) ) ).

% prod.size_neq
thf(fact_201_sum_Osize__neq,axiom,
    ! [A: $tType,B: $tType,X: sum_sum @ A @ B] :
      ( ( size_size @ ( sum_sum @ A @ B ) @ X )
     != ( zero_zero @ nat ) ) ).

% sum.size_neq
thf(fact_202_tuple__isomorphism_Osize_I2_J,axiom,
    ! [B: $tType,C: $tType,A: $tType,X1: A > ( product_prod @ B @ C ),X2: ( product_prod @ B @ C ) > A] :
      ( ( size_size @ ( tuple_isomorphism @ A @ B @ C ) @ ( tuple_742722141rphism @ A @ B @ C @ X1 @ X2 ) )
      = ( suc @ ( zero_zero @ nat ) ) ) ).

% tuple_isomorphism.size(2)
thf(fact_203_typerep_Osize__neq,axiom,
    ! [X: typerep] :
      ( ( size_size @ typerep @ X )
     != ( zero_zero @ nat ) ) ).

% typerep.size_neq
thf(fact_204_tuple__isomorphism_Osize__gen,axiom,
    ! [B: $tType,C: $tType,A: $tType,Xb: A > nat,Xa: B > nat,X: C > nat,X1: A > ( product_prod @ B @ C ),X2: ( product_prod @ B @ C ) > A] :
      ( ( tuple_1907371454rphism @ A @ B @ C @ Xb @ Xa @ X @ ( tuple_742722141rphism @ A @ B @ C @ X1 @ X2 ) )
      = ( suc @ ( zero_zero @ nat ) ) ) ).

% tuple_isomorphism.size_gen
thf(fact_205_sum_Osize_I3_J,axiom,
    ! [A: $tType,B: $tType,X1: A] :
      ( ( size_size @ ( sum_sum @ A @ B ) @ ( sum_Inl @ A @ B @ X1 ) )
      = ( suc @ ( zero_zero @ nat ) ) ) ).

% sum.size(3)
thf(fact_206_sum_Osize__gen_I1_J,axiom,
    ! [B: $tType,A: $tType,Xa: A > nat,X: B > nat,X1: A] :
      ( ( basic_BNF_size_sum @ A @ B @ Xa @ X @ ( sum_Inl @ A @ B @ X1 ) )
      = ( plus_plus @ nat @ ( Xa @ X1 ) @ ( suc @ ( zero_zero @ nat ) ) ) ) ).

% sum.size_gen(1)
thf(fact_207_sum_Osize_I4_J,axiom,
    ! [B: $tType,A: $tType,X2: B] :
      ( ( size_size @ ( sum_sum @ A @ B ) @ ( sum_Inr @ B @ A @ X2 ) )
      = ( suc @ ( zero_zero @ nat ) ) ) ).

% sum.size(4)
thf(fact_208_obj__sumE,axiom,
    ! [A: $tType,B: $tType,S: sum_sum @ A @ B] :
      ( ! [X4: A] :
          ( S
         != ( sum_Inl @ A @ B @ X4 ) )
     => ~ ! [X4: B] :
            ( S
           != ( sum_Inr @ B @ A @ X4 ) ) ) ).

% obj_sumE
thf(fact_209_sum_Osize__gen_I2_J,axiom,
    ! [A: $tType,B: $tType,Xa: A > nat,X: B > nat,X2: B] :
      ( ( basic_BNF_size_sum @ A @ B @ Xa @ X @ ( sum_Inr @ B @ A @ X2 ) )
      = ( plus_plus @ nat @ ( X @ X2 ) @ ( suc @ ( zero_zero @ nat ) ) ) ) ).

% sum.size_gen(2)
thf(fact_210_not__arg__cong__Inr,axiom,
    ! [B: $tType,A: $tType,X: A,Y: A] :
      ( ( X != Y )
     => ( ( sum_Inr @ A @ B @ X )
       != ( sum_Inr @ A @ B @ Y ) ) ) ).

% not_arg_cong_Inr
thf(fact_211_case__optionE,axiom,
    ! [A: $tType,P: $o,Q: A > $o,X: option @ A] :
      ( ( case_option @ $o @ A @ P @ Q @ X )
     => ( ( ( X
            = ( none @ A ) )
         => ~ P )
       => ~ ! [Y3: A] :
              ( ( X
                = ( some @ A @ Y3 ) )
             => ~ ( Q @ Y3 ) ) ) ) ).

% case_optionE
thf(fact_212_ssubst__Pair__rhs,axiom,
    ! [B: $tType,A: $tType,R3: A,S: B,R: set @ ( product_prod @ A @ B ),S2: B] :
      ( ( member @ ( product_prod @ A @ B ) @ ( product_Pair @ A @ B @ R3 @ S ) @ R )
     => ( ( S2 = S )
       => ( member @ ( product_prod @ A @ B ) @ ( product_Pair @ A @ B @ R3 @ S2 ) @ R ) ) ) ).

% ssubst_Pair_rhs
thf(fact_213_option_Ocase__distrib,axiom,
    ! [C: $tType,B: $tType,A: $tType,H: B > C,F1: B,F22: A > B,Option: option @ A] :
      ( ( H @ ( case_option @ B @ A @ F1 @ F22 @ Option ) )
      = ( case_option @ C @ A @ ( H @ F1 )
        @ ^ [X3: A] : ( H @ ( F22 @ X3 ) )
        @ Option ) ) ).

% option.case_distrib
thf(fact_214_option_Odisc__eq__case_I2_J,axiom,
    ! [A: $tType,Option: option @ A] :
      ( ( Option
       != ( none @ A ) )
      = ( case_option @ $o @ A @ $false
        @ ^ [Uu: A] : $true
        @ Option ) ) ).

% option.disc_eq_case(2)
thf(fact_215_option_Odisc__eq__case_I1_J,axiom,
    ! [A: $tType,Option: option @ A] :
      ( ( Option
        = ( none @ A ) )
      = ( case_option @ $o @ A @ $true
        @ ^ [Uu: A] : $false
        @ Option ) ) ).

% option.disc_eq_case(1)
thf(fact_216_disjE__realizer2,axiom,
    ! [B: $tType,A: $tType,P: $o,Q: A > $o,X: option @ A,R: B > $o,F3: B,G3: A > B] :
      ( ( case_option @ $o @ A @ P @ Q @ X )
     => ( ( P
         => ( R @ F3 ) )
       => ( ! [Q5: A] :
              ( ( Q @ Q5 )
             => ( R @ ( G3 @ Q5 ) ) )
         => ( R @ ( case_option @ B @ A @ F3 @ G3 @ X ) ) ) ) ) ).

% disjE_realizer2
thf(fact_217_typerep_Osize_I2_J,axiom,
    ! [X1: literal,X2: list @ typerep] :
      ( ( size_size @ typerep @ ( typerep2 @ X1 @ X2 ) )
      = ( plus_plus @ nat @ ( size_list @ typerep @ ( size_size @ typerep ) @ X2 ) @ ( suc @ ( zero_zero @ nat ) ) ) ) ).

% typerep.size(2)
thf(fact_218_typerep_Osize__gen,axiom,
    ! [X1: literal,X2: list @ typerep] :
      ( ( size_typerep @ ( typerep2 @ X1 @ X2 ) )
      = ( plus_plus @ nat @ ( size_list @ typerep @ size_typerep @ X2 ) @ ( suc @ ( zero_zero @ nat ) ) ) ) ).

% typerep.size_gen
thf(fact_219_list_Osize__gen_I2_J,axiom,
    ! [A: $tType,X: A > nat,X212: A,X222: list @ A] :
      ( ( size_list @ A @ X @ ( cons @ A @ X212 @ X222 ) )
      = ( plus_plus @ nat @ ( plus_plus @ nat @ ( X @ X212 ) @ ( size_list @ A @ X @ X222 ) ) @ ( suc @ ( zero_zero @ nat ) ) ) ) ).

% list.size_gen(2)
thf(fact_220_length__Suc__conv,axiom,
    ! [A: $tType,Xs: list @ A,N: nat] :
      ( ( ( size_size @ ( list @ A ) @ Xs )
        = ( suc @ N ) )
      = ( ? [Y4: A,Ys: list @ A] :
            ( ( Xs
              = ( cons @ A @ Y4 @ Ys ) )
            & ( ( size_size @ ( list @ A ) @ Ys )
              = N ) ) ) ) ).

% length_Suc_conv
thf(fact_221_Suc__length__conv,axiom,
    ! [A: $tType,N: nat,Xs: list @ A] :
      ( ( ( suc @ N )
        = ( size_size @ ( list @ A ) @ Xs ) )
      = ( ? [Y4: A,Ys: list @ A] :
            ( ( Xs
              = ( cons @ A @ Y4 @ Ys ) )
            & ( ( size_size @ ( list @ A ) @ Ys )
              = N ) ) ) ) ).

% Suc_length_conv
thf(fact_222_length__Cons,axiom,
    ! [A: $tType,X: A,Xs: list @ A] :
      ( ( size_size @ ( list @ A ) @ ( cons @ A @ X @ Xs ) )
      = ( suc @ ( size_size @ ( list @ A ) @ Xs ) ) ) ).

% length_Cons
thf(fact_223_list_Osize_I4_J,axiom,
    ! [A: $tType,X212: A,X222: list @ A] :
      ( ( size_size @ ( list @ A ) @ ( cons @ A @ X212 @ X222 ) )
      = ( plus_plus @ nat @ ( size_size @ ( list @ A ) @ X222 ) @ ( suc @ ( zero_zero @ nat ) ) ) ) ).

% list.size(4)
thf(fact_224_shift__def,axiom,
    ! [B: $tType,A: $tType] :
      ( ( bNF_Greatest_shift @ A @ B )
      = ( ^ [Lab: ( list @ A ) > B,K2: A,Kl: list @ A] : ( Lab @ ( cons @ A @ K2 @ Kl ) ) ) ) ).

% shift_def
thf(fact_225_set__Cons__def,axiom,
    ! [A: $tType] :
      ( ( set_Cons @ A )
      = ( ^ [A7: set @ A,XS: set @ ( list @ A )] :
            ( collect @ ( list @ A )
            @ ^ [Z: list @ A] :
              ? [X3: A,Xs2: list @ A] :
                ( ( Z
                  = ( cons @ A @ X3 @ Xs2 ) )
                & ( member @ A @ X3 @ A7 )
                & ( member @ ( list @ A ) @ Xs2 @ XS ) ) ) ) ) ).

% set_Cons_def
thf(fact_226_neq__if__length__neq,axiom,
    ! [A: $tType,Xs: list @ A,Ys2: list @ A] :
      ( ( ( size_size @ ( list @ A ) @ Xs )
       != ( size_size @ ( list @ A ) @ Ys2 ) )
     => ( Xs != Ys2 ) ) ).

% neq_if_length_neq
thf(fact_227_Ex__list__of__length,axiom,
    ! [A: $tType,N: nat] :
    ? [Xs3: list @ A] :
      ( ( size_size @ ( list @ A ) @ Xs3 )
      = N ) ).

% Ex_list_of_length
thf(fact_228_Cons__in__lex,axiom,
    ! [A: $tType,X: A,Xs: list @ A,Y: A,Ys2: list @ A,R3: set @ ( product_prod @ A @ A )] :
      ( ( member @ ( product_prod @ ( list @ A ) @ ( list @ A ) ) @ ( product_Pair @ ( list @ A ) @ ( list @ A ) @ ( cons @ A @ X @ Xs ) @ ( cons @ A @ Y @ Ys2 ) ) @ ( lex @ A @ R3 ) )
      = ( ( ( member @ ( product_prod @ A @ A ) @ ( product_Pair @ A @ A @ X @ Y ) @ R3 )
          & ( ( size_size @ ( list @ A ) @ Xs )
            = ( size_size @ ( list @ A ) @ Ys2 ) ) )
        | ( ( X = Y )
          & ( member @ ( product_prod @ ( list @ A ) @ ( list @ A ) ) @ ( product_Pair @ ( list @ A ) @ ( list @ A ) @ Xs @ Ys2 ) @ ( lex @ A @ R3 ) ) ) ) ) ).

% Cons_in_lex
thf(fact_229_gen__length__def,axiom,
    ! [A: $tType] :
      ( ( gen_length @ A )
      = ( ^ [N4: nat,Xs2: list @ A] : ( plus_plus @ nat @ N4 @ ( size_size @ ( list @ A ) @ Xs2 ) ) ) ) ).

% gen_length_def
thf(fact_230_gen__length__code_I2_J,axiom,
    ! [B: $tType,N: nat,X: B,Xs: list @ B] :
      ( ( gen_length @ B @ N @ ( cons @ B @ X @ Xs ) )
      = ( gen_length @ B @ ( suc @ N ) @ Xs ) ) ).

% gen_length_code(2)
thf(fact_231_length__code,axiom,
    ! [A: $tType] :
      ( ( size_size @ ( list @ A ) )
      = ( gen_length @ A @ ( zero_zero @ nat ) ) ) ).

% length_code
thf(fact_232_lexord__cons__cons,axiom,
    ! [A: $tType,A2: A,X: list @ A,B2: A,Y: list @ A,R3: set @ ( product_prod @ A @ A )] :
      ( ( member @ ( product_prod @ ( list @ A ) @ ( list @ A ) ) @ ( product_Pair @ ( list @ A ) @ ( list @ A ) @ ( cons @ A @ A2 @ X ) @ ( cons @ A @ B2 @ Y ) ) @ ( lexord @ A @ R3 ) )
      = ( ( member @ ( product_prod @ A @ A ) @ ( product_Pair @ A @ A @ A2 @ B2 ) @ R3 )
        | ( ( A2 = B2 )
          & ( member @ ( product_prod @ ( list @ A ) @ ( list @ A ) ) @ ( product_Pair @ ( list @ A ) @ ( list @ A ) @ X @ Y ) @ ( lexord @ A @ R3 ) ) ) ) ) ).

% lexord_cons_cons
thf(fact_233_lexn__length,axiom,
    ! [A: $tType,Xs: list @ A,Ys2: list @ A,R3: set @ ( product_prod @ A @ A ),N: nat] :
      ( ( member @ ( product_prod @ ( list @ A ) @ ( list @ A ) ) @ ( product_Pair @ ( list @ A ) @ ( list @ A ) @ Xs @ Ys2 ) @ ( lexn @ A @ R3 @ N ) )
     => ( ( ( size_size @ ( list @ A ) @ Xs )
          = N )
        & ( ( size_size @ ( list @ A ) @ Ys2 )
          = N ) ) ) ).

% lexn_length
thf(fact_234_lexord__irreflexive,axiom,
    ! [A: $tType,R3: set @ ( product_prod @ A @ A ),Xs: list @ A] :
      ( ! [X4: A] :
          ~ ( member @ ( product_prod @ A @ A ) @ ( product_Pair @ A @ A @ X4 @ X4 ) @ R3 )
     => ~ ( member @ ( product_prod @ ( list @ A ) @ ( list @ A ) ) @ ( product_Pair @ ( list @ A ) @ ( list @ A ) @ Xs @ Xs ) @ ( lexord @ A @ R3 ) ) ) ).

% lexord_irreflexive
thf(fact_235_lexord__linear,axiom,
    ! [A: $tType,R3: set @ ( product_prod @ A @ A ),X: list @ A,Y: list @ A] :
      ( ! [A4: A,B4: A] :
          ( ( member @ ( product_prod @ A @ A ) @ ( product_Pair @ A @ A @ A4 @ B4 ) @ R3 )
          | ( A4 = B4 )
          | ( member @ ( product_prod @ A @ A ) @ ( product_Pair @ A @ A @ B4 @ A4 ) @ R3 ) )
     => ( ( member @ ( product_prod @ ( list @ A ) @ ( list @ A ) ) @ ( product_Pair @ ( list @ A ) @ ( list @ A ) @ X @ Y ) @ ( lexord @ A @ R3 ) )
        | ( X = Y )
        | ( member @ ( product_prod @ ( list @ A ) @ ( list @ A ) ) @ ( product_Pair @ ( list @ A ) @ ( list @ A ) @ Y @ X ) @ ( lexord @ A @ R3 ) ) ) ) ).

% lexord_linear
thf(fact_236_lexord__lex,axiom,
    ! [A: $tType,X: list @ A,Y: list @ A,R3: set @ ( product_prod @ A @ A )] :
      ( ( member @ ( product_prod @ ( list @ A ) @ ( list @ A ) ) @ ( product_Pair @ ( list @ A ) @ ( list @ A ) @ X @ Y ) @ ( lex @ A @ R3 ) )
      = ( ( member @ ( product_prod @ ( list @ A ) @ ( list @ A ) ) @ ( product_Pair @ ( list @ A ) @ ( list @ A ) @ X @ Y ) @ ( lexord @ A @ R3 ) )
        & ( ( size_size @ ( list @ A ) @ X )
          = ( size_size @ ( list @ A ) @ Y ) ) ) ) ).

% lexord_lex
thf(fact_237_length__splice,axiom,
    ! [A: $tType,Xs: list @ A,Ys2: list @ A] :
      ( ( size_size @ ( list @ A ) @ ( splice @ A @ Xs @ Ys2 ) )
      = ( plus_plus @ nat @ ( size_size @ ( list @ A ) @ Xs ) @ ( size_size @ ( list @ A ) @ Ys2 ) ) ) ).

% length_splice
thf(fact_238_Shift__def,axiom,
    ! [A: $tType] :
      ( ( bNF_Greatest_Shift @ A )
      = ( ^ [Kl2: set @ ( list @ A ),K2: A] :
            ( collect @ ( list @ A )
            @ ^ [Kl: list @ A] : ( member @ ( list @ A ) @ ( cons @ A @ K2 @ Kl ) @ Kl2 ) ) ) ) ).

% Shift_def
thf(fact_239_ShiftD,axiom,
    ! [A: $tType,Kl3: list @ A,Kl4: set @ ( list @ A ),K: A] :
      ( ( member @ ( list @ A ) @ Kl3 @ ( bNF_Greatest_Shift @ A @ Kl4 @ K ) )
     => ( member @ ( list @ A ) @ ( cons @ A @ K @ Kl3 ) @ Kl4 ) ) ).

% ShiftD
thf(fact_240_Succ__Shift,axiom,
    ! [A: $tType,Kl4: set @ ( list @ A ),K: A,Kl3: list @ A] :
      ( ( bNF_Greatest_Succ @ A @ ( bNF_Greatest_Shift @ A @ Kl4 @ K ) @ Kl3 )
      = ( bNF_Greatest_Succ @ A @ Kl4 @ ( cons @ A @ K @ Kl3 ) ) ) ).

% Succ_Shift
thf(fact_241_Cons__listrel1__Cons,axiom,
    ! [A: $tType,X: A,Xs: list @ A,Y: A,Ys2: list @ A,R3: set @ ( product_prod @ A @ A )] :
      ( ( member @ ( product_prod @ ( list @ A ) @ ( list @ A ) ) @ ( product_Pair @ ( list @ A ) @ ( list @ A ) @ ( cons @ A @ X @ Xs ) @ ( cons @ A @ Y @ Ys2 ) ) @ ( listrel1 @ A @ R3 ) )
      = ( ( ( member @ ( product_prod @ A @ A ) @ ( product_Pair @ A @ A @ X @ Y ) @ R3 )
          & ( Xs = Ys2 ) )
        | ( ( X = Y )
          & ( member @ ( product_prod @ ( list @ A ) @ ( list @ A ) ) @ ( product_Pair @ ( list @ A ) @ ( list @ A ) @ Xs @ Ys2 ) @ ( listrel1 @ A @ R3 ) ) ) ) ) ).

% Cons_listrel1_Cons
thf(fact_242_listrel1__eq__len,axiom,
    ! [A: $tType,Xs: list @ A,Ys2: list @ A,R3: set @ ( product_prod @ A @ A )] :
      ( ( member @ ( product_prod @ ( list @ A ) @ ( list @ A ) ) @ ( product_Pair @ ( list @ A ) @ ( list @ A ) @ Xs @ Ys2 ) @ ( listrel1 @ A @ R3 ) )
     => ( ( size_size @ ( list @ A ) @ Xs )
        = ( size_size @ ( list @ A ) @ Ys2 ) ) ) ).

% listrel1_eq_len
thf(fact_243_listrel1I1,axiom,
    ! [A: $tType,X: A,Y: A,R3: set @ ( product_prod @ A @ A ),Xs: list @ A] :
      ( ( member @ ( product_prod @ A @ A ) @ ( product_Pair @ A @ A @ X @ Y ) @ R3 )
     => ( member @ ( product_prod @ ( list @ A ) @ ( list @ A ) ) @ ( product_Pair @ ( list @ A ) @ ( list @ A ) @ ( cons @ A @ X @ Xs ) @ ( cons @ A @ Y @ Xs ) ) @ ( listrel1 @ A @ R3 ) ) ) ).

% listrel1I1
thf(fact_244_Cons__listrel1E1,axiom,
    ! [A: $tType,X: A,Xs: list @ A,Ys2: list @ A,R3: set @ ( product_prod @ A @ A )] :
      ( ( member @ ( product_prod @ ( list @ A ) @ ( list @ A ) ) @ ( product_Pair @ ( list @ A ) @ ( list @ A ) @ ( cons @ A @ X @ Xs ) @ Ys2 ) @ ( listrel1 @ A @ R3 ) )
     => ( ! [Y3: A] :
            ( ( Ys2
              = ( cons @ A @ Y3 @ Xs ) )
           => ~ ( member @ ( product_prod @ A @ A ) @ ( product_Pair @ A @ A @ X @ Y3 ) @ R3 ) )
       => ~ ! [Zs: list @ A] :
              ( ( Ys2
                = ( cons @ A @ X @ Zs ) )
             => ~ ( member @ ( product_prod @ ( list @ A ) @ ( list @ A ) ) @ ( product_Pair @ ( list @ A ) @ ( list @ A ) @ Xs @ Zs ) @ ( listrel1 @ A @ R3 ) ) ) ) ) ).

% Cons_listrel1E1
thf(fact_245_Cons__listrel1E2,axiom,
    ! [A: $tType,Xs: list @ A,Y: A,Ys2: list @ A,R3: set @ ( product_prod @ A @ A )] :
      ( ( member @ ( product_prod @ ( list @ A ) @ ( list @ A ) ) @ ( product_Pair @ ( list @ A ) @ ( list @ A ) @ Xs @ ( cons @ A @ Y @ Ys2 ) ) @ ( listrel1 @ A @ R3 ) )
     => ( ! [X4: A] :
            ( ( Xs
              = ( cons @ A @ X4 @ Ys2 ) )
           => ~ ( member @ ( product_prod @ A @ A ) @ ( product_Pair @ A @ A @ X4 @ Y ) @ R3 ) )
       => ~ ! [Zs: list @ A] :
              ( ( Xs
                = ( cons @ A @ Y @ Zs ) )
             => ~ ( member @ ( product_prod @ ( list @ A ) @ ( list @ A ) ) @ ( product_Pair @ ( list @ A ) @ ( list @ A ) @ Zs @ Ys2 ) @ ( listrel1 @ A @ R3 ) ) ) ) ) ).

% Cons_listrel1E2
thf(fact_246_lexord__append__left__rightI,axiom,
    ! [A: $tType,A2: A,B2: A,R3: set @ ( product_prod @ A @ A ),U: list @ A,X: list @ A,Y: list @ A] :
      ( ( member @ ( product_prod @ A @ A ) @ ( product_Pair @ A @ A @ A2 @ B2 ) @ R3 )
     => ( member @ ( product_prod @ ( list @ A ) @ ( list @ A ) ) @ ( product_Pair @ ( list @ A ) @ ( list @ A ) @ ( append @ A @ U @ ( cons @ A @ A2 @ X ) ) @ ( append @ A @ U @ ( cons @ A @ B2 @ Y ) ) ) @ ( lexord @ A @ R3 ) ) ) ).

% lexord_append_left_rightI
thf(fact_247_listrel1I,axiom,
    ! [A: $tType,X: A,Y: A,R3: set @ ( product_prod @ A @ A ),Xs: list @ A,Us: list @ A,Vs: list @ A,Ys2: list @ A] :
      ( ( member @ ( product_prod @ A @ A ) @ ( product_Pair @ A @ A @ X @ Y ) @ R3 )
     => ( ( Xs
          = ( append @ A @ Us @ ( cons @ A @ X @ Vs ) ) )
       => ( ( Ys2
            = ( append @ A @ Us @ ( cons @ A @ Y @ Vs ) ) )
         => ( member @ ( product_prod @ ( list @ A ) @ ( list @ A ) ) @ ( product_Pair @ ( list @ A ) @ ( list @ A ) @ Xs @ Ys2 ) @ ( listrel1 @ A @ R3 ) ) ) ) ) ).

% listrel1I
thf(fact_248_append__eq__append__conv,axiom,
    ! [A: $tType,Xs: list @ A,Ys2: list @ A,Us: list @ A,Vs: list @ A] :
      ( ( ( ( size_size @ ( list @ A ) @ Xs )
          = ( size_size @ ( list @ A ) @ Ys2 ) )
        | ( ( size_size @ ( list @ A ) @ Us )
          = ( size_size @ ( list @ A ) @ Vs ) ) )
     => ( ( ( append @ A @ Xs @ Us )
          = ( append @ A @ Ys2 @ Vs ) )
        = ( ( Xs = Ys2 )
          & ( Us = Vs ) ) ) ) ).

% append_eq_append_conv
thf(fact_249_length__append,axiom,
    ! [A: $tType,Xs: list @ A,Ys2: list @ A] :
      ( ( size_size @ ( list @ A ) @ ( append @ A @ Xs @ Ys2 ) )
      = ( plus_plus @ nat @ ( size_size @ ( list @ A ) @ Xs ) @ ( size_size @ ( list @ A ) @ Ys2 ) ) ) ).

% length_append
thf(fact_250_size__list__append,axiom,
    ! [A: $tType,F3: A > nat,Xs: list @ A,Ys2: list @ A] :
      ( ( size_list @ A @ F3 @ ( append @ A @ Xs @ Ys2 ) )
      = ( plus_plus @ nat @ ( size_list @ A @ F3 @ Xs ) @ ( size_list @ A @ F3 @ Ys2 ) ) ) ).

% size_list_append
thf(fact_251_lexord__sufE,axiom,
    ! [A: $tType,Xs: list @ A,Zs2: list @ A,Ys2: list @ A,Qs: list @ A,R3: set @ ( product_prod @ A @ A )] :
      ( ( member @ ( product_prod @ ( list @ A ) @ ( list @ A ) ) @ ( product_Pair @ ( list @ A ) @ ( list @ A ) @ ( append @ A @ Xs @ Zs2 ) @ ( append @ A @ Ys2 @ Qs ) ) @ ( lexord @ A @ R3 ) )
     => ( ( Xs != Ys2 )
       => ( ( ( size_size @ ( list @ A ) @ Xs )
            = ( size_size @ ( list @ A ) @ Ys2 ) )
         => ( ( ( size_size @ ( list @ A ) @ Zs2 )
              = ( size_size @ ( list @ A ) @ Qs ) )
           => ( member @ ( product_prod @ ( list @ A ) @ ( list @ A ) ) @ ( product_Pair @ ( list @ A ) @ ( list @ A ) @ Xs @ Ys2 ) @ ( lexord @ A @ R3 ) ) ) ) ) ) ).

% lexord_sufE
thf(fact_252_lex__append__leftD,axiom,
    ! [A: $tType,R3: set @ ( product_prod @ A @ A ),Xs: list @ A,Ys2: list @ A,Zs2: list @ A] :
      ( ! [X4: A] :
          ~ ( member @ ( product_prod @ A @ A ) @ ( product_Pair @ A @ A @ X4 @ X4 ) @ R3 )
     => ( ( member @ ( product_prod @ ( list @ A ) @ ( list @ A ) ) @ ( product_Pair @ ( list @ A ) @ ( list @ A ) @ ( append @ A @ Xs @ Ys2 ) @ ( append @ A @ Xs @ Zs2 ) ) @ ( lex @ A @ R3 ) )
       => ( member @ ( product_prod @ ( list @ A ) @ ( list @ A ) ) @ ( product_Pair @ ( list @ A ) @ ( list @ A ) @ Ys2 @ Zs2 ) @ ( lex @ A @ R3 ) ) ) ) ).

% lex_append_leftD

% Type constructors (35)
thf(tcon_Com_Ocom___Nat_Osize,axiom,
    size @ com ).

thf(tcon_Int_Oint___Semiring__Normalization_Ocomm__semiring__1__cancel__crossproduct,axiom,
    semiri456707255roduct @ int ).

thf(tcon_Int_Oint___Divides_Ounique__euclidean__semiring__numeral,axiom,
    unique1598680935umeral @ int ).

thf(tcon_Int_Oint___Groups_Oordered__ab__semigroup__add,axiom,
    ordere779506340up_add @ int ).

thf(tcon_Int_Oint___Groups_Olinordered__ab__group__add,axiom,
    linord219039673up_add @ int ).

thf(tcon_Int_Oint___Groups_Ocancel__comm__monoid__add,axiom,
    cancel1352612707id_add @ int ).

thf(tcon_Int_Oint___Groups_Ocancel__semigroup__add,axiom,
    cancel_semigroup_add @ int ).

thf(tcon_Int_Oint___Groups_Oab__semigroup__add,axiom,
    ab_semigroup_add @ int ).

thf(tcon_Int_Oint___Groups_Ocomm__monoid__add,axiom,
    comm_monoid_add @ int ).

thf(tcon_Int_Oint___Groups_Osemigroup__add,axiom,
    semigroup_add @ int ).

thf(tcon_Int_Oint___Groups_Omonoid__add,axiom,
    monoid_add @ int ).

thf(tcon_Int_Oint___Groups_Ogroup__add,axiom,
    group_add @ int ).

thf(tcon_Int_Oint___Num_Oneg__numeral,axiom,
    neg_numeral @ int ).

thf(tcon_Int_Oint___Groups_Ozero,axiom,
    zero @ int ).

thf(tcon_Nat_Onat___Semiring__Normalization_Ocomm__semiring__1__cancel__crossproduct_1,axiom,
    semiri456707255roduct @ nat ).

thf(tcon_Nat_Onat___Divides_Ounique__euclidean__semiring__numeral_2,axiom,
    unique1598680935umeral @ nat ).

thf(tcon_Nat_Onat___Groups_Ocanonically__ordered__monoid__add,axiom,
    canoni770627133id_add @ nat ).

thf(tcon_Nat_Onat___Groups_Oordered__ab__semigroup__add_3,axiom,
    ordere779506340up_add @ nat ).

thf(tcon_Nat_Onat___Groups_Ocancel__comm__monoid__add_4,axiom,
    cancel1352612707id_add @ nat ).

thf(tcon_Nat_Onat___Groups_Ocancel__semigroup__add_5,axiom,
    cancel_semigroup_add @ nat ).

thf(tcon_Nat_Onat___Groups_Oab__semigroup__add_6,axiom,
    ab_semigroup_add @ nat ).

thf(tcon_Nat_Onat___Groups_Ocomm__monoid__add_7,axiom,
    comm_monoid_add @ nat ).

thf(tcon_Nat_Onat___Groups_Osemigroup__add_8,axiom,
    semigroup_add @ nat ).

thf(tcon_Nat_Onat___Groups_Omonoid__add_9,axiom,
    monoid_add @ nat ).

thf(tcon_Nat_Onat___Groups_Ozero_10,axiom,
    zero @ nat ).

thf(tcon_Nat_Onat___Nat_Osize_11,axiom,
    size @ nat ).

thf(tcon_AExp_Oaexp___Nat_Osize_12,axiom,
    size @ aexp ).

thf(tcon_BExp_Obexp___Nat_Osize_13,axiom,
    size @ bexp ).

thf(tcon_List_Olist___Nat_Osize_14,axiom,
    ! [A8: $tType] : ( size @ ( list @ A8 ) ) ).

thf(tcon_String_Ochar___Nat_Osize_15,axiom,
    size @ char ).

thf(tcon_Sum__Type_Osum___Nat_Osize_16,axiom,
    ! [A8: $tType,A9: $tType] : ( size @ ( sum_sum @ A8 @ A9 ) ) ).

thf(tcon_Option_Ooption___Nat_Osize_17,axiom,
    ! [A8: $tType] : ( size @ ( option @ A8 ) ) ).

thf(tcon_Typerep_Otyperep___Nat_Osize_18,axiom,
    size @ typerep ).

thf(tcon_Product__Type_Oprod___Nat_Osize_19,axiom,
    ! [A8: $tType,A9: $tType] : ( size @ ( product_prod @ A8 @ A9 ) ) ).

thf(tcon_Record_Otuple__isomorphism___Nat_Osize_20,axiom,
    ! [A8: $tType,A9: $tType,A10: $tType] : ( size @ ( tuple_isomorphism @ A8 @ A9 @ A10 ) ) ).

% Conjectures (1)
thf(conj_0,conjecture,
    ? [S6: ( list @ char ) > int,S8: ( list @ char ) > int] :
      ( ( relati1010904253t_back @ ( ( list @ char ) > int ) @ p @ b @ c @ ( suc @ ka ) @ S6 @ S8 )
      & ( bval @ b @ S6 )
      & ( big_big_step @ ( product_Pair @ com @ ( ( list @ char ) > int ) @ c @ S6 ) @ ta )
      & ( big_big_step @ ( product_Pair @ com @ ( ( list @ char ) > int ) @ c2 @ S8 ) @ t_a ) ) ).

%------------------------------------------------------------------------------